mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-19 02:52:53 +02:00
Work around PR28400 a bit harder.
We were still crashing in the "no change" case because LVI was not getting invalidated. See the thread "Should analyses be able to hold AssertingVH to IR? (related to PR28400)" for more discussion. llvm-svn: 274656
This commit is contained in:
parent
8d82476153
commit
c71eae70be
@ -148,11 +148,14 @@ PreservedAnalyses JumpThreadingPass::run(Function &F,
|
||||
}
|
||||
bool Changed =
|
||||
runImpl(F, &TLI, &LVI, HasProfileData, std::move(BFI), std::move(BPI));
|
||||
|
||||
// FIXME: We need to invalidate LVI to avoid PR28400. Is there a better
|
||||
// solution?
|
||||
AM.invalidate<LazyValueAnalysis>(F);
|
||||
|
||||
if (!Changed)
|
||||
return PreservedAnalyses::all();
|
||||
PreservedAnalyses PA;
|
||||
// FIXME: Not preserving LVI! We need it to be invalidated so that we
|
||||
// don't run into issues like PR28400. Is there a better solution?
|
||||
PA.preserve<GlobalsAA>();
|
||||
return PA;
|
||||
}
|
||||
|
19
test/Transforms/JumpThreading/crash-assertingvh.ll
Normal file
19
test/Transforms/JumpThreading/crash-assertingvh.ll
Normal file
@ -0,0 +1,19 @@
|
||||
; RUN: opt -disable-output < %s -passes='module(function(jump-threading),globaldce)'
|
||||
|
||||
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
||||
target triple = "x86_64-unknown-linux-gnu"
|
||||
|
||||
declare i32 @bar()
|
||||
|
||||
define internal i32 @foo() {
|
||||
entry:
|
||||
%call4 = call i32 @bar()
|
||||
%cmp5 = icmp eq i32 %call4, 0
|
||||
br i1 %cmp5, label %if.then6, label %if.end8
|
||||
|
||||
if.then6:
|
||||
ret i32 0
|
||||
|
||||
if.end8:
|
||||
ret i32 1
|
||||
}
|
Loading…
Reference in New Issue
Block a user