Skip to content
  1. Sep 21, 2009
    • Chris Lattner's avatar
      convert an std::pair to an explicit struct. · 0cdc17eb
      Chris Lattner authored
      llvm-svn: 82446
      0cdc17eb
    • Chris Lattner's avatar
      move some functions, add a comment. · d28f9089
      Chris Lattner authored
      llvm-svn: 82444
      d28f9089
    • Chris Lattner's avatar
      split HandleLoadFromClobberingStore in two pieces: one that does the · 9d7fb295
      Chris Lattner authored
      analysis, one that does the xform.
      
      llvm-svn: 82443
      9d7fb295
    • Chris Lattner's avatar
      Improve GVN to be able to forward substitute a small load · 0a9616d9
      Chris Lattner authored
      from a piece of a large store when both are in the same block.
      
      This allows clang to compile the testcase in PR4216 to this code:
      
      _test_bitfield:
      	movl	4(%esp), %eax
      	movl	%eax, %ecx
      	andl	$-65536, %ecx
      	orl	$32962, %eax
      	andl	$40186, %eax
      	orl	%ecx, %eax
      	ret
      
      This is not ideal, but is a whole lot better than the code produced
      by llvm-gcc:
      
      _test_bitfield:
      	movw	$-32574, %ax
      	orw	4(%esp), %ax
      	andw	$-25350, %ax
      	movw	%ax, 4(%esp)
      	movw	7(%esp), %cx
      	shlw	$8, %cx
      	movzbl	6(%esp), %edx
      	orw	%cx, %dx
      	movzwl	%dx, %ecx
      	shll	$16, %ecx
      	movzwl	%ax, %eax
      	orl	%ecx, %eax
      	ret
      
      and dramatically better than that produced by gcc 4.2:
      
      _test_bitfield:
      	pushl	%ebx
      	call	L3
      "L00000000001$pb":
      L3:
      	popl	%ebx
      	movl	8(%esp), %eax
      	leal	0(,%eax,4), %edx
      	sarb	$7, %dl
      	movl	%eax, %ecx
      	andl	$7168, %ecx
      	andl	$-7201, %ebx
      	movzbl	%dl, %edx
      	andl	$1, %edx
      	sall	$5, %edx
      	orl	%ecx, %ebx
      	orl	%edx, %ebx
      	andl	$24, %eax
      	andl	$-58336, %ebx
      	orl	%eax, %ebx
      	orl	$32962, %ebx
      	movl	%ebx, %eax
      	popl	%ebx
      	ret
      
      llvm-svn: 82439
      0a9616d9
    • Chris Lattner's avatar
      formatting cleanups, no functionality change. · 1eefa9c4
      Chris Lattner authored
      llvm-svn: 82426
      1eefa9c4
  2. Sep 20, 2009
  3. Sep 19, 2009
  4. Sep 17, 2009
  5. Sep 16, 2009
  6. Sep 15, 2009
  7. Sep 09, 2009
  8. Sep 08, 2009
  9. Sep 06, 2009
  10. Sep 04, 2009
    • Dan Gohman's avatar
      Include optional subclass flags, such as inbounds, nsw, etc., in the · 0c2477c2
      Dan Gohman authored
      Constant uniquing tables. This allows distinct ConstantExpr objects
      with the same operation and different flags.
      
      Even though a ConstantExpr "a + b" is either always overflowing or
      never overflowing (due to being a ConstantExpr), it's still necessary
      to be able to represent it both with and without overflow flags at
      the same time within the IR, because the safety of the flag may
      depend on the context of the use. If the constant really does overflow,
      it wouldn't ever be safe to use with the flag set, however the use
      may be in code that is never actually executed.
      
      This also makes it possible to merge all the flags tests into a single test.
      
      llvm-svn: 80998
      0c2477c2
  11. Sep 03, 2009
  12. Sep 02, 2009
Loading