Skip to content
  1. Nov 13, 2007
    • Bill Wendling's avatar
      Unify CALLSEQ_{START,END}. They take 4 parameters: the chain, two stack · f359fed9
      Bill Wendling authored
      adjustment fields, and an optional flag. If there is a "dynamic_stackalloc" in
      the code, make sure that it's bracketed by CALLSEQ_START and CALLSEQ_END. If
      not, then there is the potential for the stack to be changed while the stack's
      being used by another instruction (like a call).
      
      This can only result in tears...
      
      llvm-svn: 44037
      f359fed9
  2. Nov 12, 2007
  3. Nov 11, 2007
  4. Nov 10, 2007
  5. Nov 09, 2007
    • Evan Cheng's avatar
      Unbreak x86-64 jumptable. · fb13fd6f
      Evan Cheng authored
      llvm-svn: 43955
      fb13fd6f
    • Dale Johannesen's avatar
      Revert previous rewrite per chris's comments. · dfb85c78
      Dale Johannesen authored
      llvm-svn: 43950
      dfb85c78
    • Evan Cheng's avatar
      Much improved pic jumptable codegen: · 797d56ff
      Evan Cheng authored
      Then:
              call    "L1$pb"
      "L1$pb":
              popl    %eax
      		...
      LBB1_1: # entry
              imull   $4, %ecx, %ecx
              leal    LJTI1_0-"L1$pb"(%eax), %edx
              addl    LJTI1_0-"L1$pb"(%ecx,%eax), %edx
              jmpl    *%edx
      
              .align  2
              .set L1_0_set_3,LBB1_3-LJTI1_0
              .set L1_0_set_2,LBB1_2-LJTI1_0
              .set L1_0_set_5,LBB1_5-LJTI1_0
              .set L1_0_set_4,LBB1_4-LJTI1_0
      LJTI1_0:
              .long    L1_0_set_3
              .long    L1_0_set_2
      
      Now:
              call    "L1$pb"
      "L1$pb":
              popl    %eax
      		...
      LBB1_1: # entry
              addl    LJTI1_0-"L1$pb"(%eax,%ecx,4), %eax
              jmpl    *%eax
      
      		.align  2
      		.set L1_0_set_3,LBB1_3-"L1$pb"
      		.set L1_0_set_2,LBB1_2-"L1$pb"
      		.set L1_0_set_5,LBB1_5-"L1$pb"
      		.set L1_0_set_4,LBB1_4-"L1$pb"
      LJTI1_0:
              .long    L1_0_set_3
              .long    L1_0_set_2
      
      llvm-svn: 43924
      797d56ff
    • Dale Johannesen's avatar
      Rewrite Dwarf number handling per review comments. · 04fd8208
      Dale Johannesen authored
      llvm-svn: 43918
      04fd8208
  6. Nov 07, 2007
  7. Nov 06, 2007
  8. Nov 05, 2007
    • Evan Cheng's avatar
      Use movups to spill / restore SSE registers on targets where stacks alignment is · 9337929a
      Evan Cheng authored
      less than 16. This is a temporary solution until dynamic stack alignment is
      implemented.
      
      llvm-svn: 43703
      9337929a
    • Duncan Sands's avatar
      Eliminate the remaining uses of getTypeSize. This · 283207a7
      Duncan Sands authored
      should only effect x86 when using long double.  Now
      12/16 bytes are output for long double globals (the
      exact amount depends on the alignment).  This brings
      globals in line with the rest of LLVM: the space
      reserved for an object is now always the ABI size.
      One tricky point is that only 10 bytes should be
      output for long double if it is a field in a packed
      struct, which is the reason for the additional
      argument to EmitGlobalConstant.
      
      llvm-svn: 43688
      283207a7
  9. Nov 04, 2007
  10. Nov 02, 2007
  11. Nov 01, 2007
  12. Oct 31, 2007
  13. Oct 30, 2007
  14. Oct 29, 2007
  15. Oct 28, 2007
  16. Oct 26, 2007
    • Anton Korobeynikov's avatar
      Fix off-by-one stack offset computations (dwarf information) for callee-saved · d07d6a41
      Anton Korobeynikov authored
      registers in case, when FP pointer was eliminated. This should fixes misc. random
      EH-related crahses, when stuff is compiled with -fomit-frame-pointer.
      Thanks Duncan for nailing this bug!
      
      llvm-svn: 43381
      d07d6a41
    • Evan Cheng's avatar
      Loosen up iv reuse to allow reuse of the same stride but a larger type when... · 7f3d0247
      Evan Cheng authored
      Loosen up iv reuse to allow reuse of the same stride but a larger type when truncating from the larger type to smaller type is free.
      e.g.
      Turns this loop:
      LBB1_1: # entry.bb_crit_edge
              xorl    %ecx, %ecx
              xorw    %dx, %dx
              movw    %dx, %si
      LBB1_2: # bb
              movl    L_X$non_lazy_ptr, %edi
              movw    %si, (%edi)
              movl    L_Y$non_lazy_ptr, %edi
              movw    %dx, (%edi)
      		addw    $4, %dx
      		incw    %si
      		incl    %ecx
      		cmpl    %eax, %ecx
      		jne     LBB1_2  # bb
      	
      into
      
      LBB1_1: # entry.bb_crit_edge
              xorl    %ecx, %ecx
              xorw    %dx, %dx
      LBB1_2: # bb
              movl    L_X$non_lazy_ptr, %esi
              movw    %cx, (%esi)
              movl    L_Y$non_lazy_ptr, %esi
              movw    %dx, (%esi)
              addw    $4, %dx
      		incl    %ecx
              cmpl    %eax, %ecx
              jne     LBB1_2  # bb
      
      llvm-svn: 43375
      7f3d0247
  17. Oct 22, 2007
  18. Oct 21, 2007
  19. Oct 20, 2007
  20. Oct 19, 2007
    • Evan Cheng's avatar
      Local spiller optimization: · 35ff7937
      Evan Cheng authored
      Turn a store folding instruction into a load folding instruction. e.g.
           xorl  %edi, %eax
           movl  %eax, -32(%ebp)
           movl  -36(%ebp), %eax
           orl   %eax, -32(%ebp)
      =>
           xorl  %edi, %eax
           orl   -36(%ebp), %eax
           mov   %eax, -32(%ebp)
      This enables the unfolding optimization for a subsequent instruction which will
      also eliminate the newly introduced store instruction.
      
      llvm-svn: 43192
      35ff7937
    • Rafael Espindola's avatar
      Add support for byval function whose argument is not 32 bit aligned. · 846c19dd
      Rafael Espindola authored
      To do this it is necessary to add a "always inline" argument to the
      memcpy node. For completeness I have also added this node to memmove
      and memset.  I have also added getMem* functions, because the extra
      argument makes it cumbersome to use getNode and because I get confused
      by it :-)
      
      llvm-svn: 43172
      846c19dd
    • Evan Cheng's avatar
      - Added getOpcodeAfterMemoryUnfold(). It doesn't unfold an instruction, but... · 463e2ab0
      Evan Cheng authored
      - Added getOpcodeAfterMemoryUnfold(). It doesn't unfold an instruction, but only returns the opcode of the instruction post unfolding.
      - Fix some copy+paste bugs.
      
      llvm-svn: 43153
      463e2ab0
Loading