forked from OSchip/llvm-project
Fix a FIXME. _foo.eh symbols are currently always exported so that the linker
knows about them. This is not necessary on 10.6 and later. llvm-svn: 114997
This commit is contained in:
parent
25a7bc9081
commit
d848beb1e5
|
@ -444,27 +444,19 @@ getExprForDwarfGlobalReference(const GlobalValue *GV, Mangler *Mang,
|
|||
|
||||
void TargetLoweringObjectFileMachO::Initialize(MCContext &Ctx,
|
||||
const TargetMachine &TM) {
|
||||
// _foo.eh symbols are currently always exported so that the linker knows
|
||||
// about them. This is not necessary on 10.6 and later, but it
|
||||
// doesn't hurt anything.
|
||||
// FIXME: I need to get this from Triple.
|
||||
IsFunctionEHSymbolGlobal = true;
|
||||
IsFunctionEHFrameSymbolPrivate = false;
|
||||
SupportsWeakOmittedEHFrame = false;
|
||||
|
||||
Triple T(((LLVMTargetMachine&)TM).getTargetTriple());
|
||||
if (T.getOS() == Triple::Darwin) {
|
||||
switch (T.getDarwinMajorNumber()) {
|
||||
case 7: // 10.3 Panther.
|
||||
case 8: // 10.4 Tiger.
|
||||
unsigned MajNum = T.getDarwinMajorNumber();
|
||||
if (MajNum == 7 || MajNum == 8) // 10.3 Panther, 10.4 Tiger
|
||||
CommDirectiveSupportsAlignment = false;
|
||||
break;
|
||||
case 9: // 10.5 Leopard.
|
||||
case 10: // 10.6 SnowLeopard.
|
||||
break;
|
||||
}
|
||||
if (MajNum > 9) // 10.6 SnowLeopard
|
||||
IsFunctionEHSymbolGlobal = false;
|
||||
}
|
||||
|
||||
|
||||
TargetLoweringObjectFile::Initialize(Ctx, TM);
|
||||
|
||||
TextSection // .text
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
; RUN: llc < %s -mtriple x86_64-apple-darwin10 -march x86 | not grep {{.globl\[\[:space:\]\]*__Z4funcv.eh}}
|
||||
; RUN: llc < %s -mtriple x86_64-apple-darwin9 -march x86 | FileCheck %s -check-prefix=DARWIN9
|
||||
|
||||
%struct.__pointer_type_info_pseudo = type { %struct.__type_info_pseudo, i32, %"struct.std::type_info"* }
|
||||
%struct.__type_info_pseudo = type { i8*, i8* }
|
||||
%"struct.std::type_info" = type opaque
|
||||
|
||||
@.str = private constant [12 x i8] c"hello world\00", align 1
|
||||
@_ZTIPc = external constant %struct.__pointer_type_info_pseudo
|
||||
|
||||
define void @_Z4funcv() noreturn optsize ssp {
|
||||
entry:
|
||||
%0 = tail call i8* @__cxa_allocate_exception(i64 8) nounwind
|
||||
%1 = bitcast i8* %0 to i8**
|
||||
store i8* getelementptr inbounds ([12 x i8]* @.str, i64 0, i64 0), i8** %1, align 8
|
||||
tail call void @__cxa_throw(i8* %0, i8* bitcast (%struct.__pointer_type_info_pseudo* @_ZTIPc to i8*), void (i8*)* null) noreturn
|
||||
unreachable
|
||||
}
|
||||
|
||||
; DARWIN9: .globl __Z4funcv.eh
|
||||
|
||||
declare i8* @__cxa_allocate_exception(i64) nounwind
|
||||
|
||||
declare void @__cxa_throw(i8*, i8*, void (i8*)*) noreturn
|
Loading…
Reference in New Issue