Change the "PreferredEHDataFormat" from "absptr" if we're on a Darwin system >
authorBill Wendling <isanbard@gmail.com>
Wed, 29 Jul 2009 00:59:34 +0000 (00:59 +0000)
committerBill Wendling <isanbard@gmail.com>
Wed, 29 Jul 2009 00:59:34 +0000 (00:59 +0000)
Leopard.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77414 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/PowerPC/PPCTargetAsmInfo.cpp
lib/Target/X86/X86TargetAsmInfo.cpp

index 39c8d21bbf1ac42ada7747ccd764fe1508168016..68fa73ea5a83212256aaae4d816c94a40ffd8f0a 100644 (file)
@@ -41,12 +41,16 @@ PPCDarwinTargetAsmInfo::PPCDarwinTargetAsmInfo(const PPCTargetMachine &TM) :
 unsigned
 PPCDarwinTargetAsmInfo::PreferredEHDataFormat(DwarfEncoding::Target Reason,
                                               bool Global) const {
-  if ((Reason == DwarfEncoding::Data || Reason == DwarfEncoding::Functions)
-      && Global)
-    return DW_EH_PE_pcrel | DW_EH_PE_indirect | DW_EH_PE_sdata4;
+  const PPCSubtarget *Subtarget = &TM.getSubtarget<PPCSubtarget>();
 
-  if (Reason == DwarfEncoding::CodeLabels || !Global)
-    return DW_EH_PE_pcrel;
+  if (Subtarget->getDarwinVers() > 9) {
+    if ((Reason == DwarfEncoding::Data || Reason == DwarfEncoding::Functions)
+        && Global)
+      return DW_EH_PE_pcrel | DW_EH_PE_indirect | DW_EH_PE_sdata4;
+
+    if (Reason == DwarfEncoding::CodeLabels || !Global)
+      return DW_EH_PE_pcrel;
+  }
 
   return DW_EH_PE_absptr;
 }
index 277c3cbba7367b77c5d7fb785852f2e1b378feea..3223f3cb72fed50748f1406b9d0e98eb33506270 100644 (file)
@@ -94,12 +94,16 @@ X86DarwinTargetAsmInfo::X86DarwinTargetAsmInfo(const X86TargetMachine &TM):
 unsigned
 X86DarwinTargetAsmInfo::PreferredEHDataFormat(DwarfEncoding::Target Reason,
                                               bool Global) const {
-  if ((Reason == DwarfEncoding::Data || Reason == DwarfEncoding::Functions)
-      && Global)
-    return DW_EH_PE_pcrel | DW_EH_PE_indirect | DW_EH_PE_sdata4;
+  const X86Subtarget *Subtarget = &TM.getSubtarget<X86Subtarget>();
+
+  if (Subtarget->getDarwinVers() > 9) {
+    if ((Reason == DwarfEncoding::Data || Reason == DwarfEncoding::Functions)
+        && Global)
+      return DW_EH_PE_pcrel | DW_EH_PE_indirect | DW_EH_PE_sdata4;
 
-  if (Reason == DwarfEncoding::CodeLabels || !Global)
-    return DW_EH_PE_pcrel;
+    if (Reason == DwarfEncoding::CodeLabels || !Global)
+      return DW_EH_PE_pcrel;
+  }
 
   return DW_EH_PE_absptr;
 }