1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 02:52:53 +02:00

Add -instcombine-code-sinking option

Reviewers: craig.topper, andrew.w.kaylor, efriedma

Reviewed By: craig.topper, andrew.w.kaylor, efriedma

Differential Revision: https://reviews.llvm.org/D52709

llvm-svn: 345248
This commit is contained in:
Gabor Buella 2018-10-25 08:32:29 +00:00
parent 7cebc3fa8d
commit 5eb75bc24f
2 changed files with 24 additions and 1 deletions

View File

@ -119,6 +119,10 @@ STATISTIC(NumReassoc , "Number of reassociations");
DEBUG_COUNTER(VisitCounter, "instcombine-visit",
"Controls which instructions are visited");
static cl::opt<bool>
EnableCodeSinking("instcombine-code-sinking", cl::desc("Enable code sinking"),
cl::init(true));
static cl::opt<bool>
EnableExpensiveCombines("expensive-combines",
cl::desc("Enable expensive instruction combines"));
@ -3103,7 +3107,7 @@ bool InstCombiner::run() {
}
// See if we can trivially sink this instruction to a successor basic block.
if (I->hasOneUse()) {
if (EnableCodeSinking && I->hasOneUse()) {
BasicBlock *BB = I->getParent();
Instruction *UserInst = cast<Instruction>(*I->user_begin());
BasicBlock *UserParent;

View File

@ -0,0 +1,19 @@
; RUN: opt -instcombine -instcombine-code-sinking=0 -S < %s | FileCheck %s
define i32 @test(i1 %C, i32 %A, i32 %B) {
; CHECK-LABEL: @test(
; CHECK: sdiv i32
; CHECK-NEXT: add i32
entry:
%tmp.2 = sdiv i32 %A, %B ; <i32> [#uses=1]
%tmp.9 = add i32 %B, %A ; <i32> [#uses=1]
br i1 %C, label %then, label %endif
then: ; preds = %entry
; CHECK: ret i32
ret i32 %tmp.9
endif: ; preds = %entry
; CHECK: ret i32
ret i32 %tmp.2
}