llvm-6502/test/Transforms/GVN/2012-05-22-PreCrash.ll
Duncan Sands 5cdbb1de7d Fix PR12858, a crash due to GVN's PRE not fully removing an instruction from the
leader table.  That's because it wasn't expecting instructions to turn up as
leader for a value number that is not its own, but equality propagation could
create this situation.  One solution is to have the leader table use a WeakVH
but this slows down GVN by about 5%.  Instead just have equality propagation not
add instructions to the leader table, only constants and arguments.  In theory
this might cause GVN to run more (each time it changes something it runs again)
but it doesn't seem to occur enough to cause a slow down.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157251 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-22 14:17:53 +00:00

34 lines
1022 B
LLVM

; RUN: opt < %s -gvn
; PR12858
define void @fn5(i16 signext %p1, i8 signext %p2) nounwind uwtable {
entry:
br i1 undef, label %if.else, label %if.then
if.then: ; preds = %entry
br label %if.end
if.else: ; preds = %entry
%conv = sext i16 %p1 to i32
br label %if.end
if.end: ; preds = %if.else, %if.then
%conv1 = sext i16 %p1 to i32
br i1 undef, label %if.then3, label %if.else4
if.then3: ; preds = %if.end
br label %if.end12
if.else4: ; preds = %if.end
%conv7 = sext i8 %p2 to i32
%cmp8 = icmp eq i32 %conv1, %conv7
br i1 %cmp8, label %if.then10, label %if.end12
if.then10: ; preds = %if.else4
br label %if.end12
if.end12: ; preds = %if.then10, %if.else4, %if.then3
%conv13 = sext i8 %p2 to i32
ret void
}