Skip to content
  1. Apr 16, 2009
  2. Apr 15, 2009
  3. Apr 14, 2009
  4. Apr 13, 2009
  5. Apr 12, 2009
  6. Apr 08, 2009
    • Chris Lattner's avatar
      Instcombine should not promote whole computation trees to "strange" · eb510d6b
      Chris Lattner authored
      integer types, unless they are already strange.  This prevents it from
      turning the code produced by SROA into crazy libcalls and stuff that 
      the code generator can't handle.  In the attached example, the result
      was an i96 multiply that caused the x86 backend to assert.
      
      Note that if TargetData had an idea of what the legal types are for
      a target that this could be used to stop instcombine from introducing
      i64 muls, as Scott wanted.
      
      llvm-svn: 68598
      eb510d6b
  7. Apr 07, 2009
  8. Apr 06, 2009
  9. Apr 02, 2009
  10. Apr 01, 2009
  11. Mar 31, 2009
    • Evan Cheng's avatar
      Throttle back "fold select into operand" transformation. InstCombine should... · 826b6f0f
      Evan Cheng authored
      Throttle back "fold select into operand" transformation. InstCombine should not generate selects of two constants unless they are selects of 0 and 1.
      
      e.g.
      define i32 @t1(i32 %c, i32 %x) nounwind {
             %t1 = icmp eq i32 %c, 0
             %t2 = lshr i32 %x, 18
             %t3 = select i1 %t1, i32 %t2, i32 %x
             ret i32 %t3
      }
      
      was turned into
      
      define i32 @t2(i32 %c, i32 %x) nounwind {
             %t1 = icmp eq i32 %c, 0
             %t2 = select i1 %t1, i32 18, i32 0
             %t3 = lshr i32 %x, %t2
             ret i32 %t3
      }
      
      For most targets, that means materializing two constants and then a select. e.g. On x86-64
      
      movl    %esi, %eax
      shrl    $18, %eax
      testl   %edi, %edi
      cmovne  %esi, %eax
      ret
      
      =>
      
      xorl    %eax, %eax
      testl   %edi, %edi
      movl    $18, %ecx
      cmovne  %eax, %ecx
      movl    %esi, %eax
      shrl    %cl, %eax
      ret
      
      Also, the optimizer and codegen can reason about shl / and / add, etc. by a constant. This optimization will hinder optimizations using ComputeMaskedBits.
      
      llvm-svn: 68142
      826b6f0f
    • Devang Patel's avatar
      Update call graph after inlining invoke. · 4ce6e690
      Devang Patel authored
      Patch by Jay Foad.
      
      llvm-svn: 68120
      4ce6e690
    • Devang Patel's avatar
      Loop Index Split can eliminate a loop if it can determin if loop body is... · 6e68bd00
      Devang Patel authored
      Loop Index Split can eliminate a loop if it can determin if loop body is executed only once. There was a bug in determining IV based value of the iteration for which the loop body is executed. Fix it.
      
      llvm-svn: 68071
      6e68bd00
  12. Mar 27, 2009
    • Duncan Sands's avatar
      Revert r67798: it breaks llvm-gcc bootstrap on x86-64-linux, presumably due to · 3241b74f
      Duncan Sands authored
      a miscompilation.
      
      make[4]: Entering directory `gcc-4.2.llvm-objects/x86_64-unknown-linux-gnu/libstdc++-v3/include'
      if [ ! -d "./x86_64-unknown-linux-gnu/bits/stdtr1c++.h.gch" ]; then \
                mkdir -p ./x86_64-unknown-linux-gnu/bits/stdtr1c++.h.gch; \
              fi; \
              gcc-4.2.llvm-objects/./gcc/xgcc -shared-libgcc -Bgcc-4.2.llvm-objects/./gcc -nostdinc++ 
      -Lgcc-4.2.llvm-objects/x86_64-unknown-linux-gnu/libstdc++-v3/src -Lgcc-4.2.llvm-objects/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs 
      -B/usr/local/gnat-llvm/x86_64-unknown-linux-gnu/bin/ -B/usr/local/gnat-llvm/x86_64-unknown-linux-gnu/lib/ -isystem 
      /usr/local/gnat-llvm/x86_64-unknown-linux-gnu/include -isystem /usr/local/gnat-llvm/x86_64-unknown-linux-gnu/sys-include -Winvalid-pch -Wno-deprecated -x 
      c++-header -g -O2  -D_GNU_SOURCE -Igcc-4.2.llvm-objects/x86_64-unknown-linux-gnu/libstdc++-v3/include/x86_64-unknown-linux-gnu 
      -Igcc-4.2.llvm-objects/x86_64-unknown-linux-gnu/libstdc++-v3/include -Igcc-4.2.llvm/libstdc++-v3/libsupc++ -O2 -g 
      gcc-4.2.llvm/libstdc++-v3/include/precompiled/stdtr1c++.h -o x86_64-unknown-linux-gnu/bits/stdtr1c++.h.gch/O2g.gch
      In file included from gcc-4.2.llvm-objects/x86_64-unknown-linux-gnu/libstdc++-v3/include/tr1/repeat.h:247,
                       from gcc-4.2.llvm-objects/x86_64-unknown-linux-gnu/libstdc++-v3/include/tr1/functional:1098,
                       from gcc-4.2.llvm/libstdc++-v3/include/precompiled/stdtr1c++.h:53:
      gcc-4.2.llvm-objects/x86_64-unknown-linux-gnu/libstdc++-v3/include/tr1/functional_iterate.h:417: internal compiler error: in ggc_recalculate_in_use_p, at 
      ggc-page.c:1602
      Please submit a full bug report,
      with preprocessed source if appropriate.
      See <URL:http://llvm.org/bugs/> for instructions.
      make[4]: *** [x86_64-unknown-linux-gnu/bits/stdtr1c++.h.gch/O2g.gch] Error 1
      
      llvm-svn: 67839
      3241b74f
    • Dale Johannesen's avatar
      One more place to skip debug info. · 4026b041
      Dale Johannesen authored
      llvm-svn: 67811
      4026b041
    • Devang Patel's avatar
      While hoisting an instruction, update alias info set tracker. · fe7c0492
      Devang Patel authored
      llvm-svn: 67798
      fe7c0492
  13. Mar 26, 2009
  14. Mar 25, 2009
  15. Mar 24, 2009
  16. Mar 23, 2009
  17. Mar 21, 2009
  18. Mar 20, 2009
  19. Mar 19, 2009
  20. Mar 18, 2009
Loading