Skip to content
  1. Dec 27, 2010
    • Benjamin Kramer's avatar
      SimplifyLibCalls: Use IRBuilder to simplify code. · 7cba269d
      Benjamin Kramer authored
      llvm-svn: 122575
      7cba269d
    • Chris Lattner's avatar
      have loop-idiom nuke instructions that feed stores that get removed. · b9fe685b
      Chris Lattner authored
      llvm-svn: 122574
      b9fe685b
    • Chris Lattner's avatar
      implement enough of the memset inference algorithm to recognize and insert · 29e14edc
      Chris Lattner authored
      memsets.  This is still missing one important validity check, but this is enough
      to compile stuff like this:
      
      void test0(std::vector<char> &X) {
        for (std::vector<char>::iterator I = X.begin(), E = X.end(); I != E; ++I)
          *I = 0;
      }
      
      void test1(std::vector<int> &X) {
        for (long i = 0, e = X.size(); i != e; ++i)
          X[i] = 0x01010101;
      }
      
      With:
       $ clang t.cpp -S -o - -O2 -emit-llvm | opt -loop-idiom | opt -O3 | llc 
      
      to:
      
      __Z5test0RSt6vectorIcSaIcEE:            ## @_Z5test0RSt6vectorIcSaIcEE
      ## BB#0:                                ## %entry
      	subq	$8, %rsp
      	movq	(%rdi), %rax
      	movq	8(%rdi), %rsi
      	cmpq	%rsi, %rax
      	je	LBB0_2
      ## BB#1:                                ## %bb.nph
      	subq	%rax, %rsi
      	movq	%rax, %rdi
      	callq	___bzero
      LBB0_2:                                 ## %for.end
      	addq	$8, %rsp
      	ret
      ...
      __Z5test1RSt6vectorIiSaIiEE:            ## @_Z5test1RSt6vectorIiSaIiEE
      ## BB#0:                                ## %entry
      	subq	$8, %rsp
      	movq	(%rdi), %rax
      	movq	8(%rdi), %rdx
      	subq	%rax, %rdx
      	cmpq	$4, %rdx
      	jb	LBB1_2
      ## BB#1:                                ## %for.body.preheader
      	andq	$-4, %rdx
      	movl	$1, %esi
      	movq	%rax, %rdi
      	callq	_memset
      LBB1_2:                                 ## %for.end
      	addq	$8, %rsp
      	ret
      
      llvm-svn: 122573
      29e14edc
  2. Dec 26, 2010
  3. Dec 24, 2010
  4. Dec 23, 2010
  5. Dec 22, 2010
  6. Dec 21, 2010
  7. Dec 19, 2010
  8. Dec 17, 2010
  9. Dec 16, 2010
  10. Dec 15, 2010
  11. Dec 13, 2010
  12. Dec 09, 2010
  13. Dec 07, 2010
  14. Dec 06, 2010
  15. Dec 05, 2010
    • Frits van Bommel's avatar
      Refactor jump threading. · 76244867
      Frits van Bommel authored
      Should have no functional change other than the order of two transformations that are mutually-exclusive and the exact formatting of debug output.
      Internally, it now stores the ConstantInt*s as Constant*s, and actual undef values instead of nulls.
      
      llvm-svn: 120946
      76244867
Loading