summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/HotColdSplit/apply-successor-penalty.ll
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/Transforms/HotColdSplit/apply-successor-penalty.ll')
-rw-r--r--llvm/test/Transforms/HotColdSplit/apply-successor-penalty.ll53
1 files changed, 53 insertions, 0 deletions
diff --git a/llvm/test/Transforms/HotColdSplit/apply-successor-penalty.ll b/llvm/test/Transforms/HotColdSplit/apply-successor-penalty.ll
new file mode 100644
index 00000000000..3886d76da01
--- /dev/null
+++ b/llvm/test/Transforms/HotColdSplit/apply-successor-penalty.ll
@@ -0,0 +1,53 @@
+; REQUIRES: asserts
+; RUN: opt -hotcoldsplit -debug-only=hotcoldsplit -S < %s -o /dev/null 2>&1 | FileCheck %s
+
+declare void @sink() cold
+
+; CHECK-LABEL: Outlining in one_non_region_successor
+define void @one_non_region_successor(i32 %arg) {
+entry:
+ br i1 undef, label %cold1, label %exit
+
+cold1:
+ ; CHECK: Applying penalty for: 1 non-region successor
+ call void @sink()
+ br i1 undef, label %cold2, label %cold3
+
+cold2:
+ br i1 undef, label %cold4, label %exit
+
+cold3:
+ br i1 undef, label %cold4, label %exit
+
+cold4:
+ unreachable
+
+exit:
+ ret void
+}
+
+; CHECK-LABEL: Outlining in two_non_region_successor
+define void @two_non_region_successors(i32 %arg) {
+entry:
+ br i1 undef, label %cold1, label %exit1
+
+cold1:
+ ; CHECK: Applying penalty for: 2 non-region successors
+ call void @sink()
+ br i1 undef, label %cold2, label %cold3
+
+cold2:
+ br i1 undef, label %cold4, label %exit1
+
+cold3:
+ br i1 undef, label %cold4, label %exit2
+
+cold4:
+ unreachable
+
+exit1:
+ br label %exit2
+
+exit2:
+ ret void
+}
OpenPOWER on IntegriCloud