summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
authorJun Bum Lim <junbuml@codeaurora.org>2017-06-23 16:12:37 +0000
committerJun Bum Lim <junbuml@codeaurora.org>2017-06-23 16:12:37 +0000
commit506cfb7ab745c49841675e969b01ea2ec3707df2 (patch)
tree6d8f07e2d3fbb79fcd9948ebd1556d72a432d1a0 /llvm/test
parenteaf0051ba30a6d3262cd6f9d0fbccd93f0949305 (diff)
downloadbcm5719-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.ll37
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
+}
OpenPOWER on IntegriCloud