[llvm-commits] [llvm] r98370 - in /llvm/trunk/lib/Target/X86: AsmPrinter/X86AsmPrinter.cpp X86ISelLowering.cpp
Bill Wendling
wendling at apple.com
Fri Mar 12 11:22:11 PST 2010
This ugly code is temporary. It won't last beyond tomorrow.
-bw
On Mar 12, 2010, at 11:20 AM, Bill Wendling wrote:
> Author: void
> Date: Fri Mar 12 13:20:40 2010
> New Revision: 98370
>
> URL: http://llvm.org/viewvc/llvm-project?rev=98370&view=rev
> Log:
> Add a beta-test for placing the LSDA into the TEXT section on X86.
>
> Modified:
> llvm/trunk/lib/Target/X86/AsmPrinter/X86AsmPrinter.cpp
> llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
>
> Modified: llvm/trunk/lib/Target/X86/AsmPrinter/X86AsmPrinter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/AsmPrinter/X86AsmPrinter.cpp?rev=98370&r1=98369&r2=98370&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/X86/AsmPrinter/X86AsmPrinter.cpp (original)
> +++ llvm/trunk/lib/Target/X86/AsmPrinter/X86AsmPrinter.cpp Fri Mar 12 13:20:40 2010
> @@ -523,10 +523,18 @@
> // L_foo$non_lazy_ptr:
> OutStreamer.EmitLabel(Stubs[i].first);
> // .indirect_symbol _foo
> - OutStreamer.EmitSymbolAttribute(Stubs[i].second.getPointer(),
> + MachineModuleInfoImpl::StubValueTy &MCSym = Stubs[i].second;
> + OutStreamer.EmitSymbolAttribute(MCSym.getPointer(),
> MCSA_IndirectSymbol);
> // .long 0
> - OutStreamer.EmitIntValue(0, 4/*size*/, 0/*addrspace*/);
> + if (MCSym.getInt())
> + // External to current translation unit.
> + OutStreamer.EmitIntValue(0, 4/*size*/, 0/*addrspace*/);
> + else
> + // Internal to current translation unit.
> + OutStreamer.EmitValue(MCSymbolRefExpr::Create(MCSym.getPointer(),
> + OutContext),
> + 4/*size*/, 0/*addrspace*/);
> }
> Stubs.clear();
> OutStreamer.AddBlankLine();
>
> Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp?rev=98370&r1=98369&r2=98370&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (original)
> +++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Fri Mar 12 13:20:40 2010
> @@ -37,6 +37,7 @@
> #include "llvm/CodeGen/PseudoSourceValue.h"
> #include "llvm/MC/MCAsmInfo.h"
> #include "llvm/MC/MCContext.h"
> +#include "llvm/MC/MCSectionMachO.h"
> #include "llvm/MC/MCSymbol.h"
> #include "llvm/ADT/BitVector.h"
> #include "llvm/ADT/SmallSet.h"
> @@ -45,10 +46,12 @@
> #include "llvm/ADT/VectorExtras.h"
> #include "llvm/Support/CommandLine.h"
> #include "llvm/Support/Debug.h"
> +#include "llvm/Support/Dwarf.h"
> #include "llvm/Support/ErrorHandling.h"
> #include "llvm/Support/MathExtras.h"
> #include "llvm/Support/raw_ostream.h"
> using namespace llvm;
> +using namespace dwarf;
>
> STATISTIC(NumTailCalls, "Number of tail calls");
>
> @@ -67,10 +70,54 @@
> static SDValue getMOVL(SelectionDAG &DAG, DebugLoc dl, EVT VT, SDValue V1,
> SDValue V2);
>
> +// FIXME: This is for a test.
> +static cl::opt<bool>
> +EnableX86EHTest("enable-x86-eh-test", cl::Hidden);
> +
> +namespace llvm {
> + class X86_test_MachoTargetObjectFile : 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;
> + }
> + };
> +
> + class X8664_test_MachoTargetObjectFile : public X8664_MachoTargetObjectFile {
> + 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(X86TargetMachine &TM) {
> switch (TM.getSubtarget<X86Subtarget>().TargetType) {
> default: llvm_unreachable("unknown subtarget type");
> case X86Subtarget::isDarwin:
> + // FIXME: This is for an EH test.
> + if (EnableX86EHTest) {
> + if (TM.getSubtarget<X86Subtarget>().is64Bit())
> + return new X8664_test_MachoTargetObjectFile();
> + else
> + return new X86_test_MachoTargetObjectFile();
> + }
> +
> if (TM.getSubtarget<X86Subtarget>().is64Bit())
> return new X8664_MachoTargetObjectFile();
> return new TargetLoweringObjectFileMachO();
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list