Revert r114997. It was causing a failure on darwin10-selfhost.
authorBill Wendling <isanbard@gmail.com>
Tue, 28 Sep 2010 23:11:55 +0000 (23:11 +0000)
committerBill Wendling <isanbard@gmail.com>
Tue, 28 Sep 2010 23:11:55 +0000 (23:11 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115002 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/TargetLoweringObjectFileImpl.cpp
test/CodeGen/X86/non-globl-eh-frame.ll

index 0f36d4296f6435520a335fa40927bc310c3e596e..4afdc3ddef522a33be4d5da9261136657103d17b 100644 (file)
@@ -444,19 +444,27 @@ 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) {
-    unsigned MajNum = T.getDarwinMajorNumber();
-    if (MajNum == 7 || MajNum == 8) // 10.3 Panther, 10.4 Tiger
+    switch (T.getDarwinMajorNumber()) {
+    case 7:  // 10.3 Panther.
+    case 8:  // 10.4 Tiger.
       CommDirectiveSupportsAlignment = false;
-    if (MajNum > 9)                 // 10.6 SnowLeopard
-      IsFunctionEHSymbolGlobal = false;
+      break;
+    case 9:   // 10.5 Leopard.
+    case 10:  // 10.6 SnowLeopard.
+      break;
+    }
   }
-
+  
   TargetLoweringObjectFile::Initialize(Ctx, TM);
 
   TextSection // .text
index 71349ecafeb685a2cd1a5c88230c6b1aab545c84..20fd9a6f1a33683347fa2428859288d2aa80f7c8 100644 (file)
@@ -1,5 +1,7 @@
 ; 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
+; XFAIL: *
+; Fail this until I can fix the global EH failure.
 
 %struct.__pointer_type_info_pseudo = type { %struct.__type_info_pseudo, i32, %"struct.std::type_info"* }
 %struct.__type_info_pseudo = type { i8*, i8* }