Skip to content
  1. Apr 25, 2009
  2. Apr 24, 2009
  3. Apr 23, 2009
  4. Apr 21, 2009
  5. Apr 20, 2009
  6. Apr 18, 2009
  7. Apr 17, 2009
  8. Apr 16, 2009
  9. Apr 15, 2009
  10. Apr 14, 2009
  11. Apr 12, 2009
  12. 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
  13. Apr 07, 2009
  14. Apr 06, 2009
  15. Apr 02, 2009
  16. Apr 01, 2009
  17. 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
      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
  18. 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
Loading