Skip to content
  1. Dec 11, 2009
  2. Dec 09, 2009
  3. Nov 30, 2009
  4. Nov 24, 2009
  5. Nov 21, 2009
  6. 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
  7. Nov 12, 2009
    • David Greene's avatar
      · 1fbe0544
      David Greene authored
      Add a bool flag to StackObjects telling whether they reference spill
      slots.  The AsmPrinter will use this information to determine whether to
      print a spill/reload comment.
      
      Remove default argument values.  It's too easy to pass a wrong argument
      value when multiple arguments have default values.  Make everything
      explicit to trap bugs early.
      
      Update all targets to adhere to the new interfaces..
      
      llvm-svn: 87022
      1fbe0544
    • Benjamin Kramer's avatar
      Add compare_lower and equals_lower methods to StringRef. Switch all users of · 68e4945c
      Benjamin Kramer authored
      StringsEqualNoCase (from StringExtras.h) to it.
      
      llvm-svn: 87020
      68e4945c
  8. Nov 08, 2009
    • Nate Begeman's avatar
      x86 vector shuffle cleanup/fixes: · 3a313df6
      Nate Begeman authored
      1. rename the movhp patfrag to movlhps, since thats what it actually matches
      2. eliminate the bogus movhps load and store patterns, they were incorrect.  The load transforms are already handled (correctly) by shufps/unpack.
      3. revert a recent test change to its correct form.
      
      llvm-svn: 86415
      3a313df6
  9. Nov 07, 2009
  10. Oct 30, 2009
  11. Oct 28, 2009
  12. Oct 27, 2009
  13. Oct 20, 2009
    • Dan Gohman's avatar
      Make TranslateX86CC return COND_INVALID instead of aborting when it · 4a43e306
      Dan Gohman authored
      encounters an OEQ or UNE comparison, and update its callers to check
      for this return status and recover. This fixes a problem resulting from
      the LowerOperation hooks being called from LegalizeVectorOps, because
      LegalizeVectorOps only lowers vectors, so OEQ and UNE comparisons may
      still be at large. This fixes PR5092.
      
      llvm-svn: 84640
      4a43e306
  14. Oct 19, 2009
  15. Oct 18, 2009
  16. Oct 17, 2009
  17. Oct 12, 2009
  18. Oct 08, 2009
  19. Sep 25, 2009
    • Dan Gohman's avatar
      Improve MachineMemOperand handling. · 48b185d6
      Dan Gohman authored
       - Allocate MachineMemOperands and MachineMemOperand lists in MachineFunctions.
         This eliminates MachineInstr's std::list member and allows the data to be
         created by isel and live for the remainder of codegen, avoiding a lot of
         copying and unnecessary translation. This also shrinks MemSDNode.
       - Delete MemOperandSDNode. Introduce MachineSDNode which has dedicated
         fields for MachineMemOperands.
       - Change MemSDNode to have a MachineMemOperand member instead of its own
         fields with the same information. This introduces some redundancy, but
         it's more consistent with what MachineInstr will eventually want.
       - Ignore alignment when searching for redundant loads for CSE, but remember
         the greatest alignment.
      
      Target-specific code which previously used MemOperandSDNodes with generic
      SDNodes now use MemIntrinsicSDNodes, with opcodes in a designated range
      so that the SelectionDAG framework knows that MachineMemOperand information
      is available.
      
      llvm-svn: 82794
      48b185d6
  20. Sep 23, 2009
  21. Sep 21, 2009
  22. Sep 20, 2009
  23. Sep 19, 2009
  24. Sep 18, 2009
    • Evan Cheng's avatar
      Enhance EmitInstrWithCustomInserter() so target can specify CFG changes that... · 270d0f98
      Evan Cheng authored
      Enhance EmitInstrWithCustomInserter() so target can specify CFG changes that sdisel will use to properly complete phi nodes.
      Not functionality change yet.
      
      llvm-svn: 82273
      270d0f98
    • Chris Lattner's avatar
      Make a new X8632_MachoTargetObjectFile TLOF implementation whose · 3a78ce3a
      Chris Lattner authored
      getSymbolForDwarfGlobalReference is smart enough to know that it 
      needs to register the stub it references with MachineModuleInfoMachO,
      so that it gets emitted at the end of the file.
      
      Move stub emission from X86ATTAsmPrinter::doFinalization to the
      new X86ATTAsmPrinter::EmitEndOfAsmFile asmprinter hook.  The important
      thing here is that EmitEndOfAsmFile is called *after* the ehframes are
      emitted, so we get all the stubs.
      
      This allows us to remove a gross hack from the asmprinter where it would
      "just know" that it needed to output stubs for personality functions.
      Now this is all driven from a consistent interface.
      
      The testcase change is just reordering the expected output now that the
      stubs come out after the ehframe instead of before.
      
      This also unblocks other changes that Bill wants to make.
      
      llvm-svn: 82269
      3a78ce3a
    • Dan Gohman's avatar
      Add support for using the FLAGS result of or, xor, and and instructions · 722b1eef
      Dan Gohman authored
      on x86, to avoid explicit test instructions. A few existing tests changed
      due to arbitrary register allocation differences.
      
      llvm-svn: 82263
      722b1eef
  25. Sep 16, 2009
    • Chris Lattner's avatar
      Big change #1 for personality function references: · b866602f
      Chris Lattner authored
      Eliminate the PersonalityPrefix/Suffix & NeedsIndirectEncoding
      fields from MAI: they aren't part of the asm syntax, they are
      related to the structure of the object file.
      
      To replace their functionality, add a new 
      TLOF::getSymbolForDwarfGlobalReference method which asks targets
      to decide how to reference a global from EH in a pc-relative way.
      
      The default implementation just returns the symbol.  The default
      darwin implementation references the symbol through an indirect
      $non_lazy_ptr stub.  The bizarro x86-64 darwin specialization
      handles the weird "foo@GOTPCREL+4" hack.
      
      DwarfException.cpp now uses this to emit the reference to the
      symbol in the right way, and this also eliminates another 
      horrible hack from DwarfException.cpp:
      
      -    if (strcmp(MAI->getPersonalitySuffix(), "+4@GOTPCREL"))
      -      O << "-" << MAI->getPCSymbol();
      
      llvm-svn: 81991
      b866602f
  26. Sep 14, 2009
  27. Sep 06, 2009
  28. Sep 03, 2009
Loading