diff options
author | Manman Ren <mren@apple.com> | 2012-09-14 17:29:56 +0000 |
---|---|---|
committer | Manman Ren <mren@apple.com> | 2012-09-14 17:29:56 +0000 |
commit | a8a2b99aec8fb2e9cb5c5433a59d836e290e4b84 (patch) | |
tree | cbfb336f358d35d991c5d125217dbe0dafbd632f /test/Transforms/SimplifyCFG/preserve-branchweights-switch-create.ll | |
parent | d039b383e76e6658846dca9eee3fe7f221a2f938 (diff) | |
download | external_llvm-a8a2b99aec8fb2e9cb5c5433a59d836e290e4b84.zip external_llvm-a8a2b99aec8fb2e9cb5c5433a59d836e290e4b84.tar.gz external_llvm-a8a2b99aec8fb2e9cb5c5433a59d836e290e4b84.tar.bz2 |
PGO: preserve branch-weight metadata when merging two switches where
the default target of the first switch is not the basic block the second switch
is in (PredDefault != BB).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163916 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Transforms/SimplifyCFG/preserve-branchweights-switch-create.ll')
-rw-r--r-- | test/Transforms/SimplifyCFG/preserve-branchweights-switch-create.ll | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/test/Transforms/SimplifyCFG/preserve-branchweights-switch-create.ll b/test/Transforms/SimplifyCFG/preserve-branchweights-switch-create.ll index 75f5f06..941f5ad 100644 --- a/test/Transforms/SimplifyCFG/preserve-branchweights-switch-create.ll +++ b/test/Transforms/SimplifyCFG/preserve-branchweights-switch-create.ll @@ -84,9 +84,57 @@ sw.epilog: ret void } +;; test3 - Merge two switches where PredDefault != BB. +define void @test3(i32 %M, i32 %N) nounwind uwtable { +entry: + %cmp = icmp sgt i32 %M, 2 + br i1 %cmp, label %sw1, label %sw2 + +sw1: + switch i32 %N, label %sw.bb [ + i32 2, label %sw2 + i32 3, label %sw2 + i32 1, label %sw.bb1 + ], !prof !4 +; CHECK: test3 +; CHECK: switch i32 %N, label %sw.bb +; CHECK: i32 1, label %sw.bb1 +; CHECK: i32 3, label %sw.bb4 +; CHECK: i32 2, label %sw.epilog +; CHECK: ], !prof !3 + +sw.bb: + call void @func2(i32 %N) nounwind + br label %sw.epilog + +sw.bb1: + call void @func4(i32 %N) nounwind + br label %sw.epilog + +sw2: + switch i32 %N, label %sw.epilog [ + i32 3, label %sw.bb4 + i32 4, label %sw.bb5 + ], !prof !5 + +sw.bb4: + call void @func6(i32 %N) nounwind + br label %sw.epilog + +sw.bb5: + call void @func8(i32 %N) nounwind + br label %sw.epilog + +sw.epilog: + ret void +} + !0 = metadata !{metadata !"branch_weights", i32 64, i32 4} !1 = metadata !{metadata !"branch_weights", i32 4, i32 64} ; CHECK: !0 = metadata !{metadata !"branch_weights", i32 256, i32 4352, i32 16} !2 = metadata !{metadata !"branch_weights", i32 4, i32 4, i32 8} !3 = metadata !{metadata !"branch_weights", i32 8, i32 8, i32 4} ; CHECK: !1 = metadata !{metadata !"branch_weights", i32 32, i32 48, i32 96, i32 16} +!4 = metadata !{metadata !"branch_weights", i32 7, i32 6, i32 4, i32 3} +!5 = metadata !{metadata !"branch_weights", i32 17, i32 13, i32 9} +; CHECK: !3 = metadata !{metadata !"branch_weights", i32 7, i32 3, i32 4, i32 6} |