forked from OSchip/llvm-project
Instructions to be redone only if from the same BB
While adding instructions(possible roots) to be redone, make sure they are from the same basic block. llvm-svn: 257112
This commit is contained in:
parent
b9ec4c6cea
commit
f94c149f7f
|
@ -2155,7 +2155,8 @@ void Reassociate::OptimizeInst(Instruction *I) {
|
|||
// During the initial run we will get to the root of the tree.
|
||||
// But if we get here while we are redoing instructions, there is no
|
||||
// guarantee that the root will be visited. So Redo later
|
||||
if (BO->user_back() != BO)
|
||||
if (BO->user_back() != BO &&
|
||||
BO->getParent() == BO->user_back()->getParent())
|
||||
RedoInsts.insert(BO->user_back());
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
; RUN: opt < %s -reassociate -S | FileCheck %s
|
||||
; CHECK-LABEL: main
|
||||
; This test is to make sure while processing a block, uses of instructions
|
||||
; from a different basic block don't get added to be re-optimized
|
||||
define void @main() {
|
||||
entry:
|
||||
%0 = fadd fast float undef, undef
|
||||
br i1 undef, label %bb1, label %bb2
|
||||
|
||||
bb1:
|
||||
%1 = fmul fast float undef, -2.000000e+00
|
||||
%2 = fmul fast float %1, 2.000000e+00
|
||||
%3 = fadd fast float %2, 2.000000e+00
|
||||
%4 = fadd fast float %3, %0
|
||||
%mul351 = fmul fast float %4, 5.000000e-01
|
||||
ret void
|
||||
|
||||
bb2:
|
||||
ret void
|
||||
}
|
Loading…
Reference in New Issue