diff options
author | Jun Bum Lim <junbuml@codeaurora.org> | 2017-06-23 16:12:37 +0000 |
---|---|---|
committer | Jun Bum Lim <junbuml@codeaurora.org> | 2017-06-23 16:12:37 +0000 |
commit | 506cfb7ab745c49841675e969b01ea2ec3707df2 (patch) | |
tree | 6d8f07e2d3fbb79fcd9948ebd1556d72a432d1a0 /llvm/test | |
parent | eaf0051ba30a6d3262cd6f9d0fbccd93f0949305 (diff) | |
download | bcm5719-llvm-506cfb7ab745c49841675e969b01ea2ec3707df2.tar.gz bcm5719-llvm-506cfb7ab745c49841675e969b01ea2ec3707df2.zip |
[InlineCost] Do not take INT_MAX when Cost is negative
Summary: visitSwitchInst should not take INT_MAX when Cost is negative. Instead of INT_MAX , we also use a valid upperbound cost when overflow occurs in Cost.
Reviewers: hans, echristo, dmgreen
Reviewed By: dmgreen
Subscribers: mcrosier, javed.absar, llvm-commits, eraman
Differential Revision: https://reviews.llvm.org/D34436
llvm-svn: 306118
Diffstat (limited to 'llvm/test')
-rw-r--r-- | llvm/test/Transforms/Inline/AArch64/switch.ll | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/llvm/test/Transforms/Inline/AArch64/switch.ll b/llvm/test/Transforms/Inline/AArch64/switch.ll index a530ba73470..154956e2b75 100644 --- a/llvm/test/Transforms/Inline/AArch64/switch.ll +++ b/llvm/test/Transforms/Inline/AArch64/switch.ll @@ -121,3 +121,40 @@ define i32 @caller_jumptable(i32 %a, i32 %b, i32* %P) { ret i32 %r } + +define internal i32 @callee_negativeCost(i32 %t) { +entry: + switch i32 %t, label %sw.default [ + i32 1, label %sw.bb + i32 0, label %sw.bb1 + i32 42, label %sw.bb2 + i32 43, label %sw.bb3 + ] + +sw.bb: ; preds = %entry + br label %cleanup + +sw.bb1: ; preds = %entry + br label %cleanup + +sw.bb2: ; preds = %entry + br label %cleanup + +sw.bb3: ; preds = %entry + br label %cleanup + +sw.default: ; preds = %entry + br label %cleanup + +cleanup: ; preds = %sw.default, %sw.bb3, %sw.bb2, %sw.bb1, %sw.bb + %retval.0 = phi i32 [ 1, %sw.default ], [ 3, %sw.bb3 ], [ 2, %sw.bb2 ], [ 0, %sw.bb1 ], [ 0, %sw.bb ] + ret i32 %retval.0 +} + +define i32 @caller_negativeCost(i32 %t) { +; CHECK-LABEL: @caller_negativeCost( +; CHECK-NOT: call i32 @callee_negativeCost +entry: + %call = call i32 @callee_negativeCost(i32 %t) + ret i32 %call +} |