[llvm-commits] [llvm] r80592 - in /llvm/trunk: include/llvm/Target/TargetLowering.h lib/CodeGen/AsmPrinter/DwarfException.cpp lib/Target/PowerPC/PPCISelLowering.cpp lib/Target/PowerPC/PPCISelLowering.h lib/Target/X86/X86ISelLowering.cpp lib/Target/X86/X86ISelLowering.h

Duncan Sands baldrick at free.fr
Mon Aug 31 09:45:16 PDT 2009


Author: baldrick
Date: Mon Aug 31 11:45:16 2009
New Revision: 80592

URL: http://llvm.org/viewvc/llvm-project?rev=80592&view=rev
Log:
Revert commit 80428.  It completely broke exception
handling on x86-32 linux.

Modified:
    llvm/trunk/include/llvm/Target/TargetLowering.h
    llvm/trunk/lib/CodeGen/AsmPrinter/DwarfException.cpp
    llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp
    llvm/trunk/lib/Target/PowerPC/PPCISelLowering.h
    llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
    llvm/trunk/lib/Target/X86/X86ISelLowering.h

Modified: llvm/trunk/include/llvm/Target/TargetLowering.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Target/TargetLowering.h?rev=80592&r1=80591&r2=80592&view=diff

==============================================================================
--- llvm/trunk/include/llvm/Target/TargetLowering.h (original)
+++ llvm/trunk/include/llvm/Target/TargetLowering.h Mon Aug 31 11:45:16 2009
@@ -32,7 +32,6 @@
 #include "llvm/ADT/SmallVector.h"
 #include "llvm/ADT/STLExtras.h"
 #include "llvm/Support/DebugLoc.h"
-#include "llvm/Support/Dwarf.h"
 #include "llvm/Target/TargetMachine.h"
 #include <climits>
 #include <map>
@@ -751,7 +750,7 @@
   /// getPICJumpTableRelocaBase - Returns relocation base for the given PIC
   /// jumptable.
   virtual SDValue getPICJumpTableRelocBase(SDValue Table,
-                                           SelectionDAG &DAG) const;
+                                             SelectionDAG &DAG) const;
 
   /// isOffsetFoldingLegal - Return true if folding a constant offset
   /// with the given GlobalAddress is legal.  It is frequently not legal in
@@ -761,18 +760,6 @@
   /// getFunctionAlignment - Return the Log2 alignment of this function.
   virtual unsigned getFunctionAlignment(const Function *) const = 0;
 
-  /// getPreferredLSDADataFormat - Return the preferred exception handling data
-  /// format for the LSDA.
-  virtual unsigned getPreferredLSDADataFormat() const {
-    return dwarf::DW_EH_PE_absptr;
-  }
-
-  /// getPreferredFDEDataFormat - Return the preferred exception handling data
-  /// format for the FDE.
-  virtual unsigned getPreferredFDEDataFormat() const {
-    return dwarf::DW_EH_PE_absptr;
-  }
-
   //===--------------------------------------------------------------------===//
   // TargetLowering Optimization Methods
   //

Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfException.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfException.cpp?rev=80592&r1=80591&r2=80592&view=diff

==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfException.cpp (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfException.cpp Mon Aug 31 11:45:16 2009
@@ -22,7 +22,6 @@
 #include "llvm/Target/TargetData.h"
 #include "llvm/Target/TargetFrameInfo.h"
 #include "llvm/Target/TargetLoweringObjectFile.h"
-#include "llvm/Target/TargetLowering.h"
 #include "llvm/Target/TargetOptions.h"
 #include "llvm/Target/TargetRegisterInfo.h"
 #include "llvm/Support/Dwarf.h"
@@ -81,7 +80,6 @@
   EmitLabel("eh_frame_common_begin", Index);
   Asm->EmitInt32((int)0);
   Asm->EOL("CIE Identifier Tag");
-
   Asm->EmitInt8(dwarf::DW_CIE_VERSION);
   Asm->EOL("CIE Version");
 
@@ -93,29 +91,23 @@
   // Round out reader.
   Asm->EmitULEB128Bytes(1);
   Asm->EOL("CIE Code Alignment Factor");
-
   Asm->EmitSLEB128Bytes(stackGrowth);
   Asm->EOL("CIE Data Alignment Factor");
-
   Asm->EmitInt8(RI->getDwarfRegNum(RI->getRARegister(), true));
   Asm->EOL("CIE Return Address Column");
 
-  unsigned Encoding = 0;
-
   // If there is a personality, we need to indicate the function's location.
   if (Personality) {
     Asm->EmitULEB128Bytes(7);
     Asm->EOL("Augmentation Size");
 
     if (MAI->getNeedsIndirectEncoding()) {
-      Encoding = dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_sdata4 |
-        dwarf::DW_EH_PE_indirect;
-      Asm->EmitInt8(Encoding);
-      Asm->EOL("Personality", Encoding);
+      Asm->EmitInt8(dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_sdata4 |
+                    dwarf::DW_EH_PE_indirect);
+      Asm->EOL("Personality (pcrel sdata4 indirect)");
     } else {
-      Encoding = dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_sdata4;
-      Asm->EmitInt8(Encoding);
-      Asm->EOL("Personality", Encoding);
+      Asm->EmitInt8(dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_sdata4);
+      Asm->EOL("Personality (pcrel sdata4)");
     }
 
     PrintRelDirective(true);
@@ -126,20 +118,17 @@
       O << "-" << MAI->getPCSymbol();
     Asm->EOL("Personality");
 
-    Encoding = Asm->TM.getTargetLowering()->getPreferredLSDADataFormat();
-    Asm->EmitInt8(Encoding);
-    Asm->EOL("LSDA Encoding", Encoding);
-
-    Encoding = Asm->TM.getTargetLowering()->getPreferredFDEDataFormat();
-    Asm->EmitInt8(Encoding);
-    Asm->EOL("FDE Encoding", Encoding);
+    Asm->EmitInt8(dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_sdata4);
+    Asm->EOL("LSDA Encoding (pcrel sdata4)");
+
+    Asm->EmitInt8(dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_sdata4);
+    Asm->EOL("FDE Encoding (pcrel sdata4)");
   } else {
     Asm->EmitULEB128Bytes(1);
     Asm->EOL("Augmentation Size");
 
-    Encoding = Asm->TM.getTargetLowering()->getPreferredFDEDataFormat();
-    Asm->EmitInt8(Encoding);
-    Asm->EOL("FDE Encoding", Encoding);
+    Asm->EmitInt8(dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_sdata4);
+    Asm->EOL("FDE Encoding (pcrel sdata4)");
   }
 
   // Indicate locations of general callee saved registers in frame.
@@ -163,7 +152,6 @@
          "Should not emit 'available externally' functions at all");
 
   const Function *TheFunc = EHFrameInfo.function;
-  bool is4Byte = TD->getPointerSize() == sizeof(int32_t);
 
   Asm->OutStreamer.SwitchSection(Asm->getObjFileLowering().getEHFrameSection());
 
@@ -207,22 +195,23 @@
 
     Asm->EOL("FDE CIE offset");
 
-    EmitReference("eh_func_begin", EHFrameInfo.Number, true, is4Byte);
+    EmitReference("eh_func_begin", EHFrameInfo.Number, true, true);
     Asm->EOL("FDE initial location");
-
     EmitDifference("eh_func_end", EHFrameInfo.Number,
-                   "eh_func_begin", EHFrameInfo.Number, is4Byte);
+                   "eh_func_begin", EHFrameInfo.Number, true);
     Asm->EOL("FDE address range");
 
     // If there is a personality and landing pads then point to the language
     // specific data area in the exception table.
     if (MMI->getPersonalities()[0] != NULL) {
+      bool is4Byte = TD->getPointerSize() == sizeof(int32_t);
+
       Asm->EmitULEB128Bytes(is4Byte ? 4 : 8);
       Asm->EOL("Augmentation size");
 
-      if (EHFrameInfo.hasLandingPads) {
+      if (EHFrameInfo.hasLandingPads)
         EmitReference("exception", EHFrameInfo.Number, true, false);
-      } else {
+      else {
 	if (is4Byte)
 	  Asm->EmitInt32((int)0);
 	else
@@ -930,8 +919,6 @@
                             MF->getFunction()));
   }
 
-  MF = 0;
-
   if (TimePassesIsEnabled)
     ExceptionTimer->stopTimer();
 }

Modified: llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp?rev=80592&r1=80591&r2=80592&view=diff

==============================================================================
--- llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp (original)
+++ llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp Mon Aug 31 11:45:16 2009
@@ -464,40 +464,6 @@
     return 2;
 }
 
-/// getPreferredLSDADataFormat - Return the preferred exception handling data
-/// format for the LSDA.
-unsigned PPCTargetLowering::getPreferredLSDADataFormat() const {
-  if (getTargetMachine().getSubtarget<PPCSubtarget>().isDarwin())
-    return dwarf::DW_EH_PE_pcrel;
-
-  if (PPCSubTarget.isPPC64() ||
-      getTargetMachine().getRelocationModel() == Reloc::PIC_) {
-    unsigned DataTy =
-      (PPCSubTarget.isPPC64() ?
-       dwarf::DW_EH_PE_udata8 : dwarf::DW_EH_PE_udata4);
-    return dwarf::DW_EH_PE_pcrel | DataTy;
-  }
-
-  return dwarf::DW_EH_PE_absptr;
-}
-
-/// getPreferredFDEDataFormat - Return the preferred exception handling data
-/// format for the FDE.
-unsigned PPCTargetLowering::getPreferredFDEDataFormat() const {
-  if (getTargetMachine().getSubtarget<PPCSubtarget>().isDarwin())
-    return dwarf::DW_EH_PE_pcrel;
-
-  if (PPCSubTarget.isPPC64() ||
-      getTargetMachine().getRelocationModel() == Reloc::PIC_) {
-    unsigned DataTy =
-      (PPCSubTarget.isPPC64() ?
-       dwarf::DW_EH_PE_udata8 : dwarf::DW_EH_PE_udata4);
-    return dwarf::DW_EH_PE_pcrel | DataTy;
-  }
-
-  return dwarf::DW_EH_PE_absptr;
-}
-
 //===----------------------------------------------------------------------===//
 // Node matching predicates, for use by the tblgen matching code.
 //===----------------------------------------------------------------------===//

Modified: llvm/trunk/lib/Target/PowerPC/PPCISelLowering.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPCISelLowering.h?rev=80592&r1=80591&r2=80592&view=diff

==============================================================================
--- llvm/trunk/lib/Target/PowerPC/PPCISelLowering.h (original)
+++ llvm/trunk/lib/Target/PowerPC/PPCISelLowering.h Mon Aug 31 11:45:16 2009
@@ -346,14 +346,6 @@
     /// getFunctionAlignment - Return the Log2 alignment of this function.
     virtual unsigned getFunctionAlignment(const Function *F) const;
 
-    /// getPreferredLSDADataFormat - Return the preferred exception handling data
-    /// format for the LSDA.
-    virtual unsigned getPreferredLSDADataFormat() const;
-
-    /// getPreferredFDEDataFormat - Return the preferred exception handling data
-    /// format for the FDE.
-    virtual unsigned getPreferredFDEDataFormat() const;
-
   private:
     SDValue getFramePointerFrameIndex(SelectionDAG & DAG) const;
     SDValue getReturnAddrFrameIndex(SelectionDAG & DAG) const;

Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp?rev=80592&r1=80591&r2=80592&view=diff

==============================================================================
--- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Mon Aug 31 11:45:16 2009
@@ -1055,49 +1055,6 @@
   return F->hasFnAttr(Attribute::OptimizeForSize) ? 0 : 4;
 }
 
-/// getPreferredLSDADataFormat - Return the preferred exception handling data
-/// format for the LSDA.
-unsigned X86TargetLowering::getPreferredLSDADataFormat() const {
-  if (Subtarget->isTargetDarwin())
-    return dwarf::DW_EH_PE_pcrel;
-
-  CodeModel::Model M = getTargetMachine().getCodeModel();
-
-  if (getTargetMachine().getRelocationModel() == Reloc::PIC_) {
-    if (!Subtarget->is64Bit() || M == CodeModel::Small)
-      return dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_sdata4;
-
-    return dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_sdata8;
-  }
-
-  if (M == CodeModel::Small)
-    return dwarf::DW_EH_PE_sdata4;
-
-  return dwarf::DW_EH_PE_absptr;
-}
-
-/// getPreferredFDEDataFormat - Return the preferred exception handling data
-/// format for the FDE.
-unsigned X86TargetLowering::getPreferredFDEDataFormat() const {
-  if (Subtarget->isTargetDarwin())
-    return dwarf::DW_EH_PE_pcrel;
-
-  CodeModel::Model M = getTargetMachine().getCodeModel();
-
-  if (getTargetMachine().getRelocationModel() == Reloc::PIC_) {
-    if (!Subtarget->is64Bit() ||
-        M == CodeModel::Small || M == CodeModel::Medium)
-      return dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_sdata4;
-
-    return dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_sdata8;
-  }
-
-  if (M == CodeModel::Small || M == CodeModel::Medium)
-    return dwarf::DW_EH_PE_sdata4;
-
-  return dwarf::DW_EH_PE_absptr;
-}
-
 //===----------------------------------------------------------------------===//
 //               Return Value Calling Convention Implementation
 //===----------------------------------------------------------------------===//

Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.h?rev=80592&r1=80591&r2=80592&view=diff

==============================================================================
--- llvm/trunk/lib/Target/X86/X86ISelLowering.h (original)
+++ llvm/trunk/lib/Target/X86/X86ISelLowering.h Mon Aug 31 11:45:16 2009
@@ -560,14 +560,6 @@
     /// getFunctionAlignment - Return the Log2 alignment of this function.
     virtual unsigned getFunctionAlignment(const Function *F) const;
 
-    /// getPreferredLSDADataFormat - Return the preferred exception handling data
-    /// format for the LSDA.
-    virtual unsigned getPreferredLSDADataFormat() const;
-
-    /// getPreferredFDEDataFormat - Return the preferred exception handling data
-    /// format for the FDE.
-    virtual unsigned getPreferredFDEDataFormat() const;
-
   private:
     /// Subtarget - Keep a pointer to the X86Subtarget around so that we can
     /// make the right decision when generating code for different targets.





More information about the llvm-commits mailing list