diff options
author | Bill Wendling <isanbard@gmail.com> | 2010-03-09 18:31:07 +0000 |
---|---|---|
committer | Bill Wendling <isanbard@gmail.com> | 2010-03-09 18:31:07 +0000 |
commit | 9481181d405ac024426b7f38a1071f1314073eb6 (patch) | |
tree | 261ea5fb377e9b9d7de194d370a498baf227d72e /llvm/lib/Target/ARM/ARMISelLowering.cpp | |
parent | c420c4cb4eb649226bc882749bac9e4ecc59b218 (diff) | |
download | bcm5719-llvm-9481181d405ac024426b7f38a1071f1314073eb6.tar.gz bcm5719-llvm-9481181d405ac024426b7f38a1071f1314073eb6.zip |
The ARM EH experiment worked!
Place the LSDA into the TEXT section for ARM platforms. This involves making the
encoding indirect, pcrel, and sdata4 instead of an absolute pointer. The
references to the type infos are then non-lazy pointers. Revision 98019 changed
the encoding of non-lazy pointers to add the symbol to the non-lazy pointer
definition if it's a local symbol (otherwise, it's external and set to '0' so
that the loader can adjust it to the real value). This paved the way for this
change to work on ARM.
llvm-svn: 98068
Diffstat (limited to 'llvm/lib/Target/ARM/ARMISelLowering.cpp')
-rw-r--r-- | llvm/lib/Target/ARM/ARMISelLowering.cpp | 31 |
1 files changed, 1 insertions, 30 deletions
diff --git a/llvm/lib/Target/ARM/ARMISelLowering.cpp b/llvm/lib/Target/ARM/ARMISelLowering.cpp index 12f1839a03b..3dd0313f4b1 100644 --- a/llvm/lib/Target/ARM/ARMISelLowering.cpp +++ b/llvm/lib/Target/ARM/ARMISelLowering.cpp @@ -40,17 +40,11 @@ #include "llvm/MC/MCSectionMachO.h" #include "llvm/Target/TargetOptions.h" #include "llvm/ADT/VectorExtras.h" -#include "llvm/Support/CommandLine.h" -#include "llvm/Support/Dwarf.h" #include "llvm/Support/ErrorHandling.h" #include "llvm/Support/MathExtras.h" #include "llvm/Support/raw_ostream.h" #include <sstream> using namespace llvm; -using namespace dwarf; - -static cl::opt<bool> EnableARMEHTest("enable-arm-eh-test", cl::Hidden, - cl::desc("Enable ARM EH Test")); static bool CC_ARM_APCS_Custom_f64(unsigned &ValNo, EVT &ValVT, EVT &LocVT, CCValAssign::LocInfo &LocInfo, @@ -134,32 +128,9 @@ void ARMTargetLowering::addQRTypeForNEON(EVT VT) { addTypeForNEON(VT, MVT::v2f64, MVT::v4i32); } -namespace llvm { - - // FIXME: This is a test of <rdar://problem/6804645>. - class ARMMachOTargetObjectFile : public TargetLoweringObjectFileMachO { - public: - virtual void Initialize(MCContext &Ctx, const TargetMachine &TM) { - TargetLoweringObjectFileMachO::Initialize(Ctx, TM); - - // Exception Handling. - LSDASection = getMachOSection("__TEXT", "__gcc_except_tab", 0, - SectionKind::getReadOnlyWithRel()); - } - - virtual unsigned getTTypeEncoding() const { - return DW_EH_PE_indirect | DW_EH_PE_pcrel | DW_EH_PE_sdata4; - } - }; - -} - static TargetLoweringObjectFile *createTLOF(TargetMachine &TM) { if (TM.getSubtarget<ARMSubtarget>().isTargetDarwin()) - if (EnableARMEHTest) - return new ARMMachOTargetObjectFile(); - else - return new TargetLoweringObjectFileMachO(); + return new ARMMachOTargetObjectFile(); return new ARMElfTargetObjectFile(); } |