mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-01 05:01:59 +01:00
Improve the bail-out predicate to really only kick in when phi
translation fails. We were bailing out in some cases that would cause us to miss GVN'ing some non-local cases away. llvm-svn: 130206
This commit is contained in:
parent
fbb7ade7ae
commit
a43e6b57a4
@ -1103,7 +1103,8 @@ bool GVN::processNonLocalLoad(LoadInst *LI,
|
|||||||
|
|
||||||
// If we had a phi translation failure, we'll have a single entry which is a
|
// If we had a phi translation failure, we'll have a single entry which is a
|
||||||
// clobber in the current block. Reject this early.
|
// clobber in the current block. Reject this early.
|
||||||
if (Deps.size() == 1 && Deps[0].getResult().isClobber()) {
|
if (Deps.size() == 1 && Deps[0].getResult().isClobber() &&
|
||||||
|
Deps[0].getResult().getInst()->getParent() == LI->getParent()) {
|
||||||
DEBUG(
|
DEBUG(
|
||||||
dbgs() << "GVN: non-local load ";
|
dbgs() << "GVN: non-local load ";
|
||||||
WriteAsOperand(dbgs(), LI);
|
WriteAsOperand(dbgs(), LI);
|
||||||
|
@ -570,4 +570,27 @@ entry:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
; Cross block partial alias case.
|
||||||
|
define i32 @load_load_partial_alias_cross_block(i8* %P) nounwind ssp {
|
||||||
|
entry:
|
||||||
|
%xx = bitcast i8* %P to i32*
|
||||||
|
%x1 = load i32* %xx, align 4
|
||||||
|
%cmp = icmp eq i32 %x1, 127
|
||||||
|
br i1 %cmp, label %land.lhs.true, label %if.end
|
||||||
|
|
||||||
|
land.lhs.true: ; preds = %entry
|
||||||
|
%arrayidx4 = getelementptr inbounds i8* %P, i64 1
|
||||||
|
%tmp5 = load i8* %arrayidx4, align 1
|
||||||
|
%conv6 = zext i8 %tmp5 to i32
|
||||||
|
ret i32 %conv6
|
||||||
|
|
||||||
|
if.end:
|
||||||
|
ret i32 52
|
||||||
|
; CHECK: @load_load_partial_alias_cross_block
|
||||||
|
; CHECK: land.lhs.true:
|
||||||
|
; CHECK-NOT: load i8
|
||||||
|
; CHECK: ret i32 %conv6
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
; RUN: opt < %s -gvn -simplifycfg \
|
; RUN: opt < %s -gvn -simplifycfg -disable-output
|
||||||
; RUN: -disable-output
|
|
||||||
; PR867
|
; PR867
|
||||||
; END.
|
|
||||||
|
|
||||||
target datalayout = "E-p:32:32"
|
target datalayout = "E-p:32:32"
|
||||||
target triple = "powerpc-apple-darwin8"
|
target triple = "powerpc-apple-darwin8"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user