diff options
| author | Sanjoy Das <sanjoy@playingwithpointers.com> | 2015-01-27 21:38:12 +0000 |
|---|---|---|
| committer | Sanjoy Das <sanjoy@playingwithpointers.com> | 2015-01-27 21:38:12 +0000 |
| commit | dcf2651043caef440b8b542ba5f6945916a96b72 (patch) | |
| tree | e2c7541f244ae4491aaa4e41cbb17807ad167a9d /llvm/test/Transforms/IRCE/multiple-access-no-preloop.ll | |
| parent | 533948088e4aa8c433827a23dcfd522b800d892f (diff) | |
| download | bcm5719-llvm-dcf2651043caef440b8b542ba5f6945916a96b72.tar.gz bcm5719-llvm-dcf2651043caef440b8b542ba5f6945916a96b72.zip | |
Teach IRCE to look at branch weights when recognizing range checks
Splitting a loop to make range checks redundant is profitable only if
the range check "never" fails. Make this fact a part of recognizing a
range check -- a branch is a range check only if it is expected to
pass (via branch_weights metadata).
Differential Revision: http://reviews.llvm.org/D7192
llvm-svn: 227249
Diffstat (limited to 'llvm/test/Transforms/IRCE/multiple-access-no-preloop.ll')
| -rw-r--r-- | llvm/test/Transforms/IRCE/multiple-access-no-preloop.ll | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/llvm/test/Transforms/IRCE/multiple-access-no-preloop.ll b/llvm/test/Transforms/IRCE/multiple-access-no-preloop.ll index 56b7b7b6c65..b8d2f140bab 100644 --- a/llvm/test/Transforms/IRCE/multiple-access-no-preloop.ll +++ b/llvm/test/Transforms/IRCE/multiple-access-no-preloop.ll @@ -13,13 +13,13 @@ define void @multiple_access_no_preloop( %idx = phi i32 [ 0, %entry ] , [ %idx.next, %in.bounds.b ] %idx.next = add i32 %idx, 1 %abc.a = icmp slt i32 %idx, %len.a - br i1 %abc.a, label %in.bounds.a, label %out.of.bounds + br i1 %abc.a, label %in.bounds.a, label %out.of.bounds, !prof !1 in.bounds.a: %addr.a = getelementptr i32* %arr_a, i32 %idx store i32 0, i32* %addr.a %abc.b = icmp slt i32 %idx, %len.b - br i1 %abc.b, label %in.bounds.b, label %out.of.bounds + br i1 %abc.b, label %in.bounds.b, label %out.of.bounds, !prof !1 in.bounds.b: %addr.b = getelementptr i32* %arr_b, i32 %idx @@ -57,3 +57,4 @@ define void @multiple_access_no_preloop( ; CHECK: br i1 %next.postloop, label %loop.postloop, label %exit.loopexit !0 = !{i32 0, i32 2147483647} +!1 = !{!"branch_weights", i32 64, i32 4} |

