[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