Get rid of an optimization in SCCP which appears to have many issues. Specifically, it doesn't handle many cases involving undef correctly, and it is missing other checks which

lead to it trying to re-mark a value marked as a constant with a different value.  It also appears to trigger very rarely.

Fixes PR11357.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144352 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Eli Friedman
2011-11-11 01:16:15 +00:00
parent cf3b89f9a8
commit b80f778bd3
2 changed files with 1 additions and 187 deletions

View File

@@ -1,20 +0,0 @@
; RUN: opt < %s -sccp -dce -simplifycfg -S | not grep br
define i32 @test(i32 %param) {
entry:
%tmp.1 = icmp ne i32 %param, 0 ; <i1> [#uses=1]
br i1 %tmp.1, label %endif.0, label %else
else: ; preds = %entry
br label %endif.0
endif.0: ; preds = %else, %entry
%a.0 = phi i32 [ 2, %else ], [ 3, %entry ] ; <i32> [#uses=1]
%b.0 = phi i32 [ 3, %else ], [ 2, %entry ] ; <i32> [#uses=1]
%tmp.5 = add i32 %a.0, %b.0 ; <i32> [#uses=1]
%tmp.7 = icmp ne i32 %tmp.5, 5 ; <i1> [#uses=1]
br i1 %tmp.7, label %UnifiedReturnBlock, label %endif.1
endif.1: ; preds = %endif.0
ret i32 0
UnifiedReturnBlock: ; preds = %endif.0
ret i32 2
}