Skip to content
  1. Jan 18, 2010
  2. Jan 16, 2010
    • Bill Wendling's avatar
      Retrying r91337: · bf5cfa1a
      Bill Wendling authored
      The CIE says that the LSDA point in the FDE section is an "sdata4". That's fine,
      but we need it to actually be 4-bytes in the FDE for some platforms. Allow
      individual platforms to decide for themselves.
      
      llvm-svn: 93616
      bf5cfa1a
  3. Dec 22, 2009
  4. Dec 21, 2009
  5. Dec 19, 2009
    • Sean Callanan's avatar
      Table-driven disassembler for the X86 architecture (16-, 32-, and 64-bit · 04cc307e
      Sean Callanan authored
      incarnations), integrated into the MC framework.  
      
      The disassembler is table-driven, using a custom TableGen backend to 
      generate hierarchical tables optimized for fast decode.  The disassembler 
      consumes MemoryObjects and produces arrays of MCInsts, adhering to the 
      abstract base class MCDisassembler (llvm/MC/MCDisassembler.h).
      
      The disassembler is documented in detail in
      
      - lib/Target/X86/Disassembler/X86Disassembler.cpp (disassembler runtime)
      - utils/TableGen/DisassemblerEmitter.cpp (table emitter)
      
      You can test the disassembler by running llvm-mc -disassemble for i386
      or x86_64 targets.  Please let me know if you encounter any problems
      with it.
      
      llvm-svn: 91749
      04cc307e
  6. Dec 02, 2009
  7. Nov 16, 2009
    • Jeffrey Yasskin's avatar
      Make X86-64 in the Large model always emit 64-bit calls. · 10d3604a
      Jeffrey Yasskin authored
      The large code model is documented at
      http://www.x86-64.org/documentation/abi.pdf and says that calls should
      assume their target doesn't live within the 32-bit pc-relative offset
      that fits in the call instruction.
      
      To do this, we turn off the global-address->target-global-address
      conversion in X86TargetLowering::LowerCall(). The first attempt at
      this broke the lazy JIT because it can separate the movabs(imm->reg)
      from the actual call instruction. The lazy JIT receives the address of
      the movabs as a relocation and needs to record the return address from
      the call; and then when that call happens, it needs to patch the
      movabs with the newly-compiled target. We could thread the call
      instruction into the relocation and record the movabs<->call mapping
      explicitly, but that seems to require at least as much new
      complication in the code generator as this change.
      
      To fix this, we make lazy functions _always_ go through a call
      stub. You'd think we'd only have to force lazy calls through a stub on
      difficult platforms, but that turns out to break indirect calls
      through a function pointer. The right fix for that is to distinguish
      between calls and address-of operations on uncompiled functions, but
      that's complex enough to leave for someone else to do.
      
      Another attempt at this defined a new CALL64i pseudo-instruction,
      which expanded to a 2-instruction sequence in the assembly output and
      was special-cased in the X86CodeEmitter's emitInstruction()
      function. That broke indirect calls in the same way as above.
      
      This patch also removes a hack forcing Darwin to the small code model.
      Without far-call-stubs, the small code model requires things of the
      JITMemoryManager that the DefaultJITMemoryManager can't provide.
      
      Thanks to echristo for lots of testing!
      
      llvm-svn: 88984
      10d3604a
  8. Nov 06, 2009
  9. Aug 27, 2009
    • Daniel Dunbar's avatar
      llvm-mc/X86: Implement single instruction encoding interface for MC. · 981a71c3
      Daniel Dunbar authored
       - Note, this is a gigantic hack, with the sole purpose of unblocking further
         work on the assembler (its also possible to test the mathcer more completely
         now).
      
       - Despite being a hack, its actually good enough to work over all of 403.gcc
         (although some encodings are probably incorrect). This is a testament to the 
         beauty of X86's MachineInstr, no doubt! ;)
      
      llvm-svn: 80234
      981a71c3
  10. Aug 22, 2009
  11. Aug 12, 2009
  12. Aug 11, 2009
  13. Aug 04, 2009
  14. Aug 03, 2009
  15. Jul 28, 2009
    • Chris Lattner's avatar
      Rip all of the global variable lowering logic out of TargetAsmInfo. Since · 5e693ed0
      Chris Lattner authored
      it is highly specific to the object file that will be generated in the end,
      this introduces a new TargetLoweringObjectFile interface that is implemented
      for each of ELF/MachO/COFF/Alpha/PIC16 and XCore.
      
      Though still is still a brutal and ugly refactoring, this is a major step
      towards goodness.
      
      This patch also:
      1. fixes a bunch of dangling pointer problems in the PIC16 backend.
      2. disables the TargetLowering copy ctor which PIC16 was accidentally using.
      3. gets us closer to xcore having its own crazy target section flags and
         pic16 not having to shadow sections with its own objects.
      4. fixes wierdness where ELF targets would set CStringSection but not
         CStringSection_.  Factor the code better.
      5. fixes some bugs in string lowering on ELF targets.
      
      llvm-svn: 77294
      5e693ed0
  16. Jul 25, 2009
  17. Jul 19, 2009
  18. Jul 16, 2009
  19. Jul 15, 2009
    • Daniel Dunbar's avatar
      Reapply TargetRegistry refactoring commits. · e833810a
      Daniel Dunbar authored
      --- Reverse-merging r75799 into '.':
       U   test/Analysis/PointerTracking
      U    include/llvm/Target/TargetMachineRegistry.h
      U    include/llvm/Target/TargetMachine.h
      U    include/llvm/Target/TargetRegistry.h
      U    include/llvm/Target/TargetSelect.h
      U    tools/lto/LTOCodeGenerator.cpp
      U    tools/lto/LTOModule.cpp
      U    tools/llc/llc.cpp
      U    lib/Target/PowerPC/PPCTargetMachine.h
      U    lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp
      U    lib/Target/PowerPC/PPCTargetMachine.cpp
      U    lib/Target/PowerPC/PPC.h
      U    lib/Target/ARM/ARMTargetMachine.cpp
      U    lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp
      U    lib/Target/ARM/ARMTargetMachine.h
      U    lib/Target/ARM/ARM.h
      U    lib/Target/XCore/XCoreTargetMachine.cpp
      U    lib/Target/XCore/XCoreTargetMachine.h
      U    lib/Target/PIC16/PIC16TargetMachine.cpp
      U    lib/Target/PIC16/PIC16TargetMachine.h
      U    lib/Target/Alpha/AsmPrinter/AlphaAsmPrinter.cpp
      U    lib/Target/Alpha/AlphaTargetMachine.cpp
      U    lib/Target/Alpha/AlphaTargetMachine.h
      U    lib/Target/X86/X86TargetMachine.h
      U    lib/Target/X86/X86.h
      U    lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.h
      U    lib/Target/X86/AsmPrinter/X86AsmPrinter.cpp
      U    lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.h
      U    lib/Target/X86/X86TargetMachine.cpp
      U    lib/Target/MSP430/MSP430TargetMachine.cpp
      U    lib/Target/MSP430/MSP430TargetMachine.h
      U    lib/Target/CppBackend/CPPTargetMachine.h
      U    lib/Target/CppBackend/CPPBackend.cpp
      U    lib/Target/CBackend/CTargetMachine.h
      U    lib/Target/CBackend/CBackend.cpp
      U    lib/Target/TargetMachine.cpp
      U    lib/Target/IA64/IA64TargetMachine.cpp
      U    lib/Target/IA64/AsmPrinter/IA64AsmPrinter.cpp
      U    lib/Target/IA64/IA64TargetMachine.h
      U    lib/Target/IA64/IA64.h
      U    lib/Target/MSIL/MSILWriter.cpp
      U    lib/Target/CellSPU/SPUTargetMachine.h
      U    lib/Target/CellSPU/SPU.h
      U    lib/Target/CellSPU/AsmPrinter/SPUAsmPrinter.cpp
      U    lib/Target/CellSPU/SPUTargetMachine.cpp
      U    lib/Target/Mips/AsmPrinter/MipsAsmPrinter.cpp
      U    lib/Target/Mips/MipsTargetMachine.cpp
      U    lib/Target/Mips/MipsTargetMachine.h
      U    lib/Target/Mips/Mips.h
      U    lib/Target/Sparc/AsmPrinter/SparcAsmPrinter.cpp
      U    lib/Target/Sparc/SparcTargetMachine.cpp
      U    lib/Target/Sparc/SparcTargetMachine.h
      U    lib/ExecutionEngine/JIT/TargetSelect.cpp
      U    lib/Support/TargetRegistry.cpp
      
      llvm-svn: 75820
      e833810a
    • Stuart Hastings's avatar
      Revert 75762, 75763, 75766..75769, 75772..75775, 75778, 75780, 75782 to repair... · 338191cd
      Stuart Hastings authored
      Revert 75762, 75763, 75766..75769, 75772..75775, 75778, 75780, 75782 to repair broken LLVM-GCC build.
      Will revert 75770 in the llvm-gcc trunk.
      
      llvm-svn: 75799
      338191cd
    • Daniel Dunbar's avatar
      Replace large swaths of copy-n-paste code with obvious helper function... · eb8c83b4
      Daniel Dunbar authored
       - Which was already present in the module!
      
       - I skipped this xform for Alpha, since it runs an extra pass during assembly
         emission, but not when emitting assembly via the DumpAsm flag.
      
       - No functionality change.
      
      --
      ddunbar@giles:llvm$ svn diff | grep '^- ' | sort | uniq -c
        18 -      PM.add(AsmPrinterCtor(ferrs(), *this, true));
        18 -    assert(AsmPrinterCtor && "AsmPrinter was not linked in");
        18 -    if (AsmPrinterCtor)
        18 -  if (DumpAsm) {
        18 -  }
      ddunbar@giles:llvm$ svn diff | grep '^+ ' | sort | uniq -c
        18 +    addAssemblyEmitter(PM, OptLevel, true, ferrs());
        18 +  if (DumpAsm)
      --
      
      llvm-svn: 75782
      eb8c83b4
    • Daniel Dunbar's avatar
      863e587d
    • Daniel Dunbar's avatar
      Provide TargetMachine implementations with reference to Target they were created · 6db8134e
      Daniel Dunbar authored
      from.
       - This commit is almost entirely propogating the reference through the
         TargetMachine subclasses' constructor calls.
      
      llvm-svn: 75778
      6db8134e
    • Daniel Dunbar's avatar
      Register Target's TargetMachine and AsmPrinter in the new registry. · b22f50e4
      Daniel Dunbar authored
       - This abuses TargetMachineRegistry's constructor for now, this will get
         cleaned up in time.
      
      llvm-svn: 75762
      b22f50e4
  20. Jul 14, 2009
    • David Greene's avatar
      · a31f96cf
      David Greene authored
      Have asm printers use formatted_raw_ostream directly to avoid a
      dynamic_cast<>.
      
      llvm-svn: 75670
      a31f96cf
  21. Jul 10, 2009
  22. Jul 09, 2009
  23. Jul 06, 2009
  24. Jul 01, 2009
Loading