diff options
| author | Reid Kleckner <rnk@google.com> | 2017-04-13 18:10:30 +0000 |
|---|---|---|
| committer | Reid Kleckner <rnk@google.com> | 2017-04-13 18:10:30 +0000 |
| commit | 3a1150352db548888caab09e2314845bd11ebdbb (patch) | |
| tree | 74b1e1c6894cd871683eed685b982b2c88e35917 /llvm/test/Transforms | |
| parent | 4ae261bcf70f9f11607e55011fdbb5182fbf7d56 (diff) | |
| download | bcm5719-llvm-3a1150352db548888caab09e2314845bd11ebdbb.tar.gz bcm5719-llvm-3a1150352db548888caab09e2314845bd11ebdbb.zip | |
[ArgPromotion] Don't drop !prof metadata on promoted calls
Noticed by inspection while doing attribute work. DAE, InstCombineCalls,
and ArgPromotion have a fair amount of duplicated code for hacking on
call sites, and you can find bugs by comparing them.
Add a test case for this.
llvm-svn: 300229
Diffstat (limited to 'llvm/test/Transforms')
| -rw-r--r-- | llvm/test/Transforms/ArgumentPromotion/profile.ll | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/llvm/test/Transforms/ArgumentPromotion/profile.ll b/llvm/test/Transforms/ArgumentPromotion/profile.ll new file mode 100644 index 00000000000..f667f9ea2c2 --- /dev/null +++ b/llvm/test/Transforms/ArgumentPromotion/profile.ll @@ -0,0 +1,23 @@ +; RUN: opt -argpromotion -mem2reg -S < %s | FileCheck %s +target datalayout = "E-p:64:64:64-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-v64:64:64-v128:128:128" + +; Checks if !prof metadata is corret in deadargelim. + +define void @caller() #0 { + %x = alloca i32 + store i32 42, i32* %x + call void @promote_i32_ptr(i32* %x), !prof !0 +; CHECK: call void @promote_i32_ptr(i32 42), !prof ![[PROF:[0-9]]] + ret void +} + +define internal void @promote_i32_ptr(i32* %xp) { + %x = load i32, i32* %xp + call void @use_i32(i32 %x) + ret void +} + +declare void @use_i32(i32) + +; CHECK: ![[PROF]] = !{!"branch_weights", i32 30} +!0 = !{!"branch_weights", i32 30} |

