SimplifyCFG: Add Trunc, ZExt and SExt to the list of cheap instructions for phi node folding
llvm-svn: 130526
This commit is contained in:
parent
73ad5bc9ea
commit
61f6602acd
|
@ -261,6 +261,9 @@ static bool DominatesMergePoint(Value *V, BasicBlock *BB,
|
||||||
case Instruction::LShr:
|
case Instruction::LShr:
|
||||||
case Instruction::AShr:
|
case Instruction::AShr:
|
||||||
case Instruction::ICmp:
|
case Instruction::ICmp:
|
||||||
|
case Instruction::Trunc:
|
||||||
|
case Instruction::ZExt:
|
||||||
|
case Instruction::SExt:
|
||||||
break; // These are all cheap and non-trapping instructions.
|
break; // These are all cheap and non-trapping instructions.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,14 +1,17 @@
|
||||||
; RUN: opt < %s -simplifycfg -S | not grep br
|
; RUN: opt < %s -simplifycfg -S | not grep br
|
||||||
|
|
||||||
define i32 @test(i1 %C, i32 %V1, i32 %V2) {
|
define i32 @test(i1 %C, i32 %V1, i32 %V2, i16 %V3) {
|
||||||
entry:
|
entry:
|
||||||
br i1 %C, label %then, label %Cont
|
br i1 %C, label %then, label %else
|
||||||
then: ; preds = %entry
|
then: ; preds = %entry
|
||||||
%V3 = or i32 %V2, %V1 ; <i32> [#uses=1]
|
%V4 = or i32 %V2, %V1 ; <i32> [#uses=1]
|
||||||
br label %Cont
|
br label %Cont
|
||||||
Cont: ; preds = %then, %entry
|
else: ; preds = %entry
|
||||||
%V4 = phi i32 [ %V1, %entry ], [ %V3, %then ] ; <i32> [#uses=0]
|
%V5 = sext i16 %V3 to i32 ; <i32> [#uses=1]
|
||||||
call i32 @test( i1 false, i32 0, i32 0 ) ; <i32>:0 [#uses=0]
|
br label %Cont
|
||||||
|
Cont: ; preds = %then, %else
|
||||||
|
%V6 = phi i32 [ %V5, %else ], [ %V4, %then ] ; <i32> [#uses=0]
|
||||||
|
call i32 @test( i1 false, i32 0, i32 0, i16 0 ) ; <i32>:0 [#uses=0]
|
||||||
ret i32 %V1
|
ret i32 %V1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue