Skip to content
  1. Nov 24, 2009
  2. Nov 23, 2009
  3. Nov 21, 2009
  4. Nov 20, 2009
  5. Nov 17, 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
    • Evan Cheng's avatar
      - Check memoperand alignment instead of checking stack alignment. Most load /... · f25ef4ff
      Evan Cheng authored
      - Check memoperand alignment instead of checking stack alignment. Most load / store folding instructions are not referencing spill stack slots.
      - Mark MOVUPSrm re-materializable.
      
      llvm-svn: 88974
      f25ef4ff
  7. Nov 14, 2009
  8. Nov 13, 2009
  9. Nov 12, 2009
    • David Greene's avatar
      · be851acf
      David Greene authored
      Make the MachineFunction argument of getFrameRegister const.
      
      This also fixes a build error.
      
      llvm-svn: 87027
      be851acf
    • David Greene's avatar
      · 70fdd57d
      David Greene authored
      Add hasLoadFromStackSlot and hasStoreToStackSlot to return whether a
      machine instruction loads or stores from/to a stack slot.  Unlike
      isLoadFromStackSlot and isStoreFromStackSlot, the instruction may be
      something other than a pure load/store (e.g. it may be an arithmetic
      operation with a memory operand).  This helps AsmPrinter determine when
      to print a spill/reload comment.
      
      This is only a hint since we may not be able to figure this out in all
      cases.  As such, it should not be relied upon for correctness.
      
      Implement for X86.  Return false by default for other architectures.
      
      llvm-svn: 87026
      70fdd57d
    • 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
  10. Nov 11, 2009
  11. Nov 10, 2009
    • Daniel Dunbar's avatar
      Add a monstrous hack to improve X86ISelDAGToDAG compile time. · b9415c7d
      Daniel Dunbar authored
       - Force NDEBUG on in any Release build. This drops the compile time to ~100s
         from ~600s, in Release mode.
      
       - This may just be a temporary workaround, I don't know the true nature of the
         gcc-4.2 compile time performance problem.
      
      llvm-svn: 86695
      b9415c7d
    • Jeffrey Yasskin's avatar
      Fix DenseMap iterator constness. · b40d3f76
      Jeffrey Yasskin authored
      This patch forbids implicit conversion of DenseMap::const_iterator to
      DenseMap::iterator which was possible because DenseMapIterator inherited
      (publicly) from DenseMapConstIterator. Conversion the other way around is now
      allowed as one may expect.
      
      The template DenseMapConstIterator is removed and the template parameter
      IsConst which specifies whether the iterator is constant is added to
      DenseMapIterator.
      
      Actually IsConst parameter is not necessary since the constness can be
      determined from KeyT but this is not relevant to the fix and can be addressed
      later.
      
      Patch by Victor Zverovich!
      
      llvm-svn: 86636
      b40d3f76
    • David Goodwin's avatar
      Fixed to address code review. No functional changes. · 0d412c25
      David Goodwin authored
      llvm-svn: 86634
      0d412c25
    • David Goodwin's avatar
      Allow targets to specify register classes whose member registers should not be... · cf89db13
      David Goodwin authored
      Allow targets to specify register classes whose member registers should not be renamed to break anti-dependencies. 
      
      llvm-svn: 86628
      cf89db13
  12. Nov 08, 2009
  13. Nov 07, 2009
  14. Nov 06, 2009
Loading