llvm-6502/lib/Transforms
Chris Lattner fdb19e5887 Fix PR2506 by being a bit more careful about reverse fact propagation when
disproving a condition.  This actually compiles the existing testcase
(udiv_select_to_select_shift) to:

define i64 @test(i64 %X, i1 %Cond) {
entry:
	%divisor1.t = lshr i64 %X, 3		; <i64> [#uses=1]
	%quotient2 = lshr i64 %X, 3		; <i64> [#uses=1]
	%sum = add i64 %divisor1.t, %quotient2		; <i64> [#uses=1]
	ret i64 %sum
}

instead of:

define i64 @test(i64 %X, i1 %Cond) {
entry:
	%quotient1.v = select i1 %Cond, i64 3, i64 4		; <i64> [#uses=1]
	%quotient1 = lshr i64 %X, %quotient1.v		; <i64> [#uses=1]
	%quotient2 = lshr i64 %X, 3		; <i64> [#uses=1]
	%sum = add i64 %quotient1, %quotient2		; <i64> [#uses=1]
	ret i64 %sum
}



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53534 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-14 00:15:52 +00:00
..
Hello Clean up the use of static and anonymous namespaces. This turned up 2008-05-13 00:00:25 +00:00
Instrumentation Tidy up BasicBlock::getFirstNonPHI, and change a bunch of places to 2008-05-23 21:05:58 +00:00
IPO Use find instead of lower_bound. 2008-07-11 20:58:19 +00:00
Scalar Fix PR2506 by being a bit more careful about reverse fact propagation when 2008-07-14 00:15:52 +00:00
Utils Fix mishandling of the infinite loop case when merging two blocks. This 2008-07-13 22:23:11 +00:00
Makefile remove attribution from lib Makefiles. 2007-12-29 20:09:26 +00:00