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:
parent
7cebc3fa8d
commit
5eb75bc24f
@ -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;
|
||||
|
19
test/Transforms/InstCombine/no_sink_instruction.ll
Normal file
19
test/Transforms/InstCombine/no_sink_instruction.ll
Normal 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
|
||||
}
|
Loading…
Reference in New Issue
Block a user