Skip to content
  1. Aug 01, 2012
  2. Jul 16, 2012
  3. Jul 10, 2012
  4. Jun 01, 2012
    • Hans Wennborg's avatar
      Implement the local-dynamic TLS model for x86 (PR3985) · 789acfb6
      Hans Wennborg authored
      This implements codegen support for accesses to thread-local variables
      using the local-dynamic model, and adds a clean-up pass so that the base
      address for the TLS block can be re-used between local-dynamic access on
      an execution path.
      
      llvm-svn: 157818
      789acfb6
  5. Feb 18, 2012
  6. Dec 20, 2011
  7. Sep 16, 2011
    • Bruno Cardoso Lopes's avatar
      Fix PR10884. · 2d406f02
      Bruno Cardoso Lopes authored
      This PR basically reports a problem where a crash in generated code
      happened due to %rbp being clobbered:
      
        pushq %rbp
        movq  %rsp, %rbp
        ....
        vmovmskps %ymm12, %ebp
        ....
        movq  %rbp, %rsp
        popq  %rbp
        ret
      
      Since Eric's r123367 commit, the default stack alignment for x86 32-bit
      has changed to be 16-bytes. Since then, the MaxStackAlignmentHeuristicPass
      hasn't been really used, but with AVX it becomes useful again, since per
      ABI compliance we don't always align the stack to 256-bit, but only when
      there are 256-bit incoming arguments.
      
      ReserveFP was only used by this pass, but there's no RA target hook that
      uses getReserveFP() to check for the presence of FP (since nothing was
      triggering the pass to run, the uses of getReserveFP() were removed
      through time without being noticed). Change this pass to use
      setForceFramePointer, which is properly called by MachineFunction
      hasFP method.
      
      The testcase is very big and dependent on RA, not sure if it's worth
      adding to test/CodeGen/X86.
      
      llvm-svn: 139939
      2d406f02
  8. Aug 30, 2011
  9. Apr 17, 2010
  10. Apr 06, 2010
    • Jim Grosbach's avatar
      Fix PR6696 and PR6663 · 4dac8906
      Jim Grosbach authored
      When a frame pointer is not otherwise required, and dynamic stack alignment
      is necessary solely due to the spilling of a register with larger alignment
      requirements than the default stack alignment, the frame pointer can be both
      used as a general purpose register and a frame pointer. That goes poorly, for
      obvious reasons. This patch brings back a bit of old logic for identifying
      the use of such registers and conservatively reserves the frame pointer
      during register allocation in such cases.
      
      For now, implement for X86 only since it's 32-bit linux which is hitting this,
      and we want a targeted fix for 2.7. As a follow-on, this will be expanded
      to handle other targets, as theoretically the problem could arise elsewhere
      as well.
      
      llvm-svn: 100559
      4dac8906
  11. Feb 12, 2010
  12. Feb 06, 2010
  13. Jun 06, 2009
  14. Apr 15, 2009
  15. Oct 03, 2008
  16. Sep 30, 2008
  17. Apr 22, 2008
    • Dan Gohman's avatar
      Implement an x86-64 ABI detail of passing structs by hidden first · f166d2d0
      Dan Gohman authored
      argument. The x86-64 ABI requires the incoming value of %rdi to
      be copied to %rax on exit from a function that is returning a
      large C struct.
      
      Also, add a README-X86-64 entry detailing the missed optimization
      opportunity and proposing an alternative approach.
      
      llvm-svn: 50075
      f166d2d0
  18. Jan 05, 2008
  19. Dec 29, 2007
  20. Oct 11, 2007
  21. Aug 15, 2007
  22. Jul 17, 2007
  23. Apr 17, 2007
  24. Sep 26, 2006
  25. Sep 21, 2006
  26. Jun 09, 2006
  27. Jun 07, 2006
Loading