[llvm-branch-commits] [llvm-branch] r80456 - in /llvm/branches/Apple/Bender-SWB: include/llvm/CodeGen/AsmPrinter.h include/llvm/Target/TargetLowering.h lib/CodeGen/AsmPrinter/AsmPrinter.cpp lib/CodeGen/AsmPrinter/DwarfWriter.cpp lib/CodeGen/MachineModuleInfo.cpp lib/Target/PowerPC/PPCISelLowering.cpp lib/Target/PowerPC/PPCISelLowering.h lib/Target/X86/X86ISelLowering.cpp lib/Target/X86/X86ISelLowering.h

Bill Wendling isanbard at gmail.com
Sat Aug 29 17:06:01 PDT 2009


Author: void
Date: Sat Aug 29 19:06:01 2009
New Revision: 80456

URL: http://llvm.org/viewvc/llvm-project?rev=80456&view=rev
Log:
Port these revistions to Bender-SWB:

79969 79971 79981 80139 80146 80198 80208 80401 80414 80427 80428


Modified:
    llvm/branches/Apple/Bender-SWB/include/llvm/CodeGen/AsmPrinter.h
    llvm/branches/Apple/Bender-SWB/include/llvm/Target/TargetLowering.h
    llvm/branches/Apple/Bender-SWB/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
    llvm/branches/Apple/Bender-SWB/lib/CodeGen/AsmPrinter/DwarfWriter.cpp
    llvm/branches/Apple/Bender-SWB/lib/CodeGen/MachineModuleInfo.cpp
    llvm/branches/Apple/Bender-SWB/lib/Target/PowerPC/PPCISelLowering.cpp
    llvm/branches/Apple/Bender-SWB/lib/Target/PowerPC/PPCISelLowering.h
    llvm/branches/Apple/Bender-SWB/lib/Target/X86/X86ISelLowering.cpp
    llvm/branches/Apple/Bender-SWB/lib/Target/X86/X86ISelLowering.h

Modified: llvm/branches/Apple/Bender-SWB/include/llvm/CodeGen/AsmPrinter.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/Bender-SWB/include/llvm/CodeGen/AsmPrinter.h?rev=80456&r1=80455&r2=80456&view=diff

==============================================================================
--- llvm/branches/Apple/Bender-SWB/include/llvm/CodeGen/AsmPrinter.h (original)
+++ llvm/branches/Apple/Bender-SWB/include/llvm/CodeGen/AsmPrinter.h Sat Aug 29 19:06:01 2009
@@ -259,6 +259,8 @@
     void EOL() const;
     void EOL(const std::string &Comment) const;
     void EOL(const char* Comment) const;
+    void EOL(const std::string &Comment, unsigned Encoding) const;
+    void EOL(const char *Comment, unsigned Encoding) const;
     
     /// EmitULEB128Bytes - Emit an assembler byte data directive to compose an
     /// unsigned leb128 value.

Modified: llvm/branches/Apple/Bender-SWB/include/llvm/Target/TargetLowering.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/Bender-SWB/include/llvm/Target/TargetLowering.h?rev=80456&r1=80455&r2=80456&view=diff

==============================================================================
--- llvm/branches/Apple/Bender-SWB/include/llvm/Target/TargetLowering.h (original)
+++ llvm/branches/Apple/Bender-SWB/include/llvm/Target/TargetLowering.h Sat Aug 29 19:06:01 2009
@@ -31,6 +31,7 @@
 #include "llvm/ADT/SmallVector.h"
 #include "llvm/ADT/STLExtras.h"
 #include "llvm/CodeGen/DebugLoc.h"
+#include "llvm/Support/Dwarf.h"
 #include "llvm/Target/TargetMachine.h"
 #include <climits>
 #include <map>
@@ -721,13 +722,25 @@
   /// 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
   /// PIC relocation models.
   virtual bool isOffsetFoldingLegal(const GlobalAddressSDNode *GA) const;
 
+  /// 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/branches/Apple/Bender-SWB/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/Bender-SWB/lib/CodeGen/AsmPrinter/AsmPrinter.cpp?rev=80456&r1=80455&r2=80456&view=diff

==============================================================================
--- llvm/branches/Apple/Bender-SWB/lib/CodeGen/AsmPrinter/AsmPrinter.cpp (original)
+++ llvm/branches/Apple/Bender-SWB/lib/CodeGen/AsmPrinter/AsmPrinter.cpp Sat Aug 29 19:06:01 2009
@@ -631,6 +631,56 @@
   O << '\n';
 }
 
+static const char *DecodeDWARFEncoding(unsigned Encoding) {
+  switch (Encoding) {
+  case dwarf::DW_EH_PE_absptr:
+    return "absptr";
+  case dwarf::DW_EH_PE_omit:
+    return "omit";
+  case dwarf::DW_EH_PE_pcrel:
+    return "pcrel";
+  case dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_udata4:
+    return "pcrel udata4";
+  case dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_sdata4:
+    return "pcrel sdata4";
+  case dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_udata8:
+    return "pcrel udata8";
+  case dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_sdata8:
+    return "pcrel sdata8";
+  case dwarf::DW_EH_PE_indirect | dwarf::DW_EH_PE_pcrel |dwarf::DW_EH_PE_udata4:
+    return "indirect pcrel udata4";
+  case dwarf::DW_EH_PE_indirect | dwarf::DW_EH_PE_pcrel |dwarf::DW_EH_PE_sdata4:
+    return "indirect pcrel sdata4";
+  case dwarf::DW_EH_PE_indirect | dwarf::DW_EH_PE_pcrel |dwarf::DW_EH_PE_udata8:
+    return "indirect pcrel udata8";
+  case dwarf::DW_EH_PE_indirect | dwarf::DW_EH_PE_pcrel |dwarf::DW_EH_PE_sdata8:
+    return "indirect pcrel sdata8";
+  }
+
+  return 0;
+}
+
+void AsmPrinter::EOL(const std::string &Comment, unsigned Encoding) const {
+  if (VerboseAsm && !Comment.empty()) {
+    EOL(Comment.c_str(), Encoding);
+    return;
+  }
+  O << '\n';
+}
+
+void AsmPrinter::EOL(const char *Comment, unsigned Encoding) const {
+  if (VerboseAsm && *Comment) {
+    O << '\t'
+      << TAI->getCommentString()
+      << ' '
+      << Comment;
+
+    if (const char *EncStr = DecodeDWARFEncoding(Encoding))
+      O << " (" << EncStr << ')';
+  }
+  O << '\n';
+}
+
 /// EmitULEB128Bytes - Emit an assembler byte data directive to compose an
 /// unsigned leb128 value.
 void AsmPrinter::EmitULEB128Bytes(unsigned Value) const {

Modified: llvm/branches/Apple/Bender-SWB/lib/CodeGen/AsmPrinter/DwarfWriter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/Bender-SWB/lib/CodeGen/AsmPrinter/DwarfWriter.cpp?rev=80456&r1=80455&r2=80456&view=diff

==============================================================================
--- llvm/branches/Apple/Bender-SWB/lib/CodeGen/AsmPrinter/DwarfWriter.cpp (original)
+++ llvm/branches/Apple/Bender-SWB/lib/CodeGen/AsmPrinter/DwarfWriter.cpp Sat Aug 29 19:06:01 2009
@@ -33,6 +33,7 @@
 #include "llvm/Target/TargetData.h"
 #include "llvm/Target/TargetFrameInfo.h"
 #include "llvm/Target/TargetInstrInfo.h"
+#include "llvm/Target/TargetLowering.h"
 #include "llvm/Target/TargetMachine.h"
 #include "llvm/Target/TargetOptions.h"
 #include "llvm/ADT/DenseMap.h"
@@ -3803,9 +3804,10 @@
   /// ExceptionTimer - Timer for the Dwarf exception writer.
   Timer *ExceptionTimer;
 
-  /// EmitCommonEHFrame - Emit the common eh unwind frame.
-  ///
-  void EmitCommonEHFrame(const Function *Personality, unsigned Index) {
+  /// EmitCIE - Emit a Common Information Entry (CIE). This holds information
+  /// that is shared among many Frame Description Entries.  There is at least
+  /// one CIE in every non-empty .debug_frame section.
+  void EmitCIE(const Function *Personality, unsigned Index) {
     // Size and sign of stack growth.
     int stackGrowth =
         Asm->TM.getFrameInfo()->getStackGrowthDirection() ==
@@ -3832,6 +3834,7 @@
     EmitLabel("eh_frame_common_begin", Index);
     Asm->EmitInt32((int)0);
     Asm->EOL("CIE Identifier Tag");
+
     Asm->EmitInt8(DW_CIE_VERSION);
     Asm->EOL("CIE Version");
 
@@ -3843,22 +3846,29 @@
     // 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");
 
-    // If there is a personality, we need to indicate the functions location.
+    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 (TAI->getNeedsIndirectEncoding()) {
-        Asm->EmitInt8(DW_EH_PE_pcrel | DW_EH_PE_sdata4 | DW_EH_PE_indirect);
-        Asm->EOL("Personality (pcrel sdata4 indirect)");
+        Encoding = dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_sdata4 |
+          dwarf::DW_EH_PE_indirect;
+        Asm->EmitInt8(Encoding);
+        Asm->EOL("Personality", Encoding);
       } else {
-        Asm->EmitInt8(DW_EH_PE_pcrel | DW_EH_PE_sdata4);
-        Asm->EOL("Personality (pcrel sdata4)");
+        Encoding = dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_sdata4;
+        Asm->EmitInt8(Encoding);
+        Asm->EOL("Personality", Encoding);
       }
 
       PrintRelDirective(true);
@@ -3869,17 +3879,20 @@
         O << "-" << TAI->getPCSymbol();
       Asm->EOL("Personality");
 
-      Asm->EmitInt8(DW_EH_PE_pcrel | DW_EH_PE_sdata4);
-      Asm->EOL("LSDA Encoding (pcrel sdata4)");
-
-      Asm->EmitInt8(DW_EH_PE_pcrel | DW_EH_PE_sdata4);
-      Asm->EOL("FDE Encoding (pcrel sdata4)");
+      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);
    } else {
       Asm->EmitULEB128Bytes(1);
       Asm->EOL("Augmentation Size");
 
-      Asm->EmitInt8(DW_EH_PE_pcrel | DW_EH_PE_sdata4);
-      Asm->EOL("FDE Encoding (pcrel sdata4)");
+      Encoding = Asm->TM.getTargetLowering()->getPreferredFDEDataFormat();
+      Asm->EmitInt8(Encoding);
+      Asm->EOL("FDE Encoding", Encoding);
     }
 
     // Indicate locations of general callee saved registers in frame.
@@ -3897,15 +3910,15 @@
     Asm->EOL();
   }
 
-  /// EmitEHFrame - Emit function exception frame information.
-  ///
-  void EmitEHFrame(const FunctionEHFrameInfo &EHFrameInfo) {
+  /// EmitFDE - Emit the Frame Description Entry (FDE) for the function.
+  void EmitFDE(const FunctionEHFrameInfo &EHFrameInfo) {
     Function::LinkageTypes linkage = EHFrameInfo.function->getLinkage();
     
     assert(!EHFrameInfo.function->hasAvailableExternallyLinkage() && 
            "Should not emit 'available externally' functions at all");
 
     Asm->SwitchToTextSection(TAI->getDwarfEHFrameSection());
+    bool is4Byte = TD->getPointerSize() == sizeof(int32_t);
 
     // Externally visible entry into the functions eh frame info.
     // If the corresponding function is static, this should not be
@@ -3968,22 +3981,26 @@
 
       Asm->EOL("FDE CIE offset");
 
-      EmitReference("eh_func_begin", EHFrameInfo.Number, true, true);
+      EmitReference("eh_func_begin", EHFrameInfo.Number, true, is4Byte);
       Asm->EOL("FDE initial location");
       EmitDifference("eh_func_end", EHFrameInfo.Number,
-                     "eh_func_begin", EHFrameInfo.Number, true);
+                     "eh_func_begin", EHFrameInfo.Number, is4Byte);
       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 (EHFrameInfo.PersonalityIndex) {
-        Asm->EmitULEB128Bytes(4);
+      if (MMI->getPersonalities()[0] != NULL) {
+        Asm->EmitULEB128Bytes(is4Byte ? 4 : 8);
         Asm->EOL("Augmentation size");
 
-        if (EHFrameInfo.hasLandingPads)
-          EmitReference("exception", EHFrameInfo.Number, true, true);
-        else
-          Asm->EmitInt32((int)0);
+        if (EHFrameInfo.hasLandingPads) {
+          EmitReference("exception", EHFrameInfo.Number, true, false);
+        } else {
+          if (is4Byte)
+            Asm->EmitInt32((int)0);
+          else
+            Asm->EmitInt64((int)0);
+        }
         Asm->EOL("Language Specific Data Area");
       } else {
         Asm->EmitULEB128Bytes(0);
@@ -4011,6 +4028,8 @@
         if (const char *UsedDirective = TAI->getUsedDirective())
           O << UsedDirective << EHFrameInfo.FnName << "\n\n";
     }
+
+    Asm->EOL();
   }
 
   /// EmitExceptionTable - Emit landing pads and actions.
@@ -4453,11 +4472,11 @@
     if (shouldEmitMovesModule || shouldEmitTableModule) {
       const std::vector<Function *> Personalities = MMI->getPersonalities();
       for (unsigned i = 0; i < Personalities.size(); ++i)
-        EmitCommonEHFrame(Personalities[i], i);
+        EmitCIE(Personalities[i], i);
 
       for (std::vector<FunctionEHFrameInfo>::iterator I = EHFrames.begin(),
              E = EHFrames.end(); I != E; ++I)
-        EmitEHFrame(*I);
+        EmitFDE(*I);
     }
 
     if (TimePassesIsEnabled)

Modified: llvm/branches/Apple/Bender-SWB/lib/CodeGen/MachineModuleInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/Bender-SWB/lib/CodeGen/MachineModuleInfo.cpp?rev=80456&r1=80455&r2=80456&view=diff

==============================================================================
--- llvm/branches/Apple/Bender-SWB/lib/CodeGen/MachineModuleInfo.cpp (original)
+++ llvm/branches/Apple/Bender-SWB/lib/CodeGen/MachineModuleInfo.cpp Sat Aug 29 19:06:01 2009
@@ -44,7 +44,7 @@
 , CallsUnwindInit(0)
 , DbgInfoAvailable(false)
 {
-  // Always emit "no personality" info
+  // Always emit some info, by default "no personality" info.
   Personalities.push_back(NULL);
 }
 MachineModuleInfo::~MachineModuleInfo() {
@@ -149,7 +149,12 @@
     if (Personalities[i] == Personality)
       return;
   
-  Personalities.push_back(Personality);
+  // If this is the first personality we're adding go
+  // ahead and add it at the beginning.
+  if (Personalities[0] == NULL)
+    Personalities[0] = Personality;
+  else
+    Personalities.push_back(Personality);
 }
 
 /// addCatchTypeInfo - Provide the catch typeinfo for a landing pad.
@@ -273,7 +278,7 @@
 }
 
 /// getPersonalityIndex - Return unique index for current personality
-/// function. NULL personality function should always get zero index.
+/// function. NULL/first personality function should always get zero index.
 unsigned MachineModuleInfo::getPersonalityIndex() const {
   const Function* Personality = NULL;
   
@@ -289,8 +294,8 @@
       return i;
   }
 
-  // This should never happen
-  assert(0 && "Personality function should be set!");
+  // This will happen if the current personality function is
+  // in the zero index.
   return 0;
 }
 

Modified: llvm/branches/Apple/Bender-SWB/lib/Target/PowerPC/PPCISelLowering.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/Bender-SWB/lib/Target/PowerPC/PPCISelLowering.cpp?rev=80456&r1=80455&r2=80456&view=diff

==============================================================================
--- llvm/branches/Apple/Bender-SWB/lib/Target/PowerPC/PPCISelLowering.cpp (original)
+++ llvm/branches/Apple/Bender-SWB/lib/Target/PowerPC/PPCISelLowering.cpp Sat Aug 29 19:06:01 2009
@@ -4880,3 +4880,37 @@
   // The PowerPC target isn't yet aware of offsets.
   return false;
 }
+
+/// 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;
+}

Modified: llvm/branches/Apple/Bender-SWB/lib/Target/PowerPC/PPCISelLowering.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/Bender-SWB/lib/Target/PowerPC/PPCISelLowering.h?rev=80456&r1=80455&r2=80456&view=diff

==============================================================================
--- llvm/branches/Apple/Bender-SWB/lib/Target/PowerPC/PPCISelLowering.h (original)
+++ llvm/branches/Apple/Bender-SWB/lib/Target/PowerPC/PPCISelLowering.h Sat Aug 29 19:06:01 2009
@@ -337,6 +337,14 @@
 
     virtual bool isOffsetFoldingLegal(const GlobalAddressSDNode *GA) 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/branches/Apple/Bender-SWB/lib/Target/X86/X86ISelLowering.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/Bender-SWB/lib/Target/X86/X86ISelLowering.cpp?rev=80456&r1=80455&r2=80456&view=diff

==============================================================================
--- llvm/branches/Apple/Bender-SWB/lib/Target/X86/X86ISelLowering.cpp (original)
+++ llvm/branches/Apple/Bender-SWB/lib/Target/X86/X86ISelLowering.cpp Sat Aug 29 19:06:01 2009
@@ -933,6 +933,49 @@
   return Table;
 }
 
+/// 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/branches/Apple/Bender-SWB/lib/Target/X86/X86ISelLowering.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/Bender-SWB/lib/Target/X86/X86ISelLowering.h?rev=80456&r1=80455&r2=80456&view=diff

==============================================================================
--- llvm/branches/Apple/Bender-SWB/lib/Target/X86/X86ISelLowering.h (original)
+++ llvm/branches/Apple/Bender-SWB/lib/Target/X86/X86ISelLowering.h Sat Aug 29 19:06:01 2009
@@ -530,6 +530,14 @@
 #endif
                    );
     
+    /// 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-branch-commits mailing list