diff options
author | Easwaran Raman <eraman@google.com> | 2016-06-27 22:31:53 +0000 |
---|---|---|
committer | Easwaran Raman <eraman@google.com> | 2016-06-27 22:31:53 +0000 |
commit | 22eb80a11419825e13dee2ea34d9e4bf90dfd220 (patch) | |
tree | 99d1ec336d95e3c109446bd9dd2459669b782977 /llvm/test/Transforms | |
parent | 59ed2ffca38f01b326459d366d1b131ec45eb483 (diff) | |
download | bcm5719-llvm-22eb80a11419825e13dee2ea34d9e4bf90dfd220.tar.gz bcm5719-llvm-22eb80a11419825e13dee2ea34d9e4bf90dfd220.zip |
Fix size computation of array allocation in inline cost analysis
Differential revision: http://reviews.llvm.org/D21690
llvm-svn: 273952
Diffstat (limited to 'llvm/test/Transforms')
-rw-r--r-- | llvm/test/Transforms/Inline/array-alloca.ll | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/llvm/test/Transforms/Inline/array-alloca.ll b/llvm/test/Transforms/Inline/array-alloca.ll new file mode 100644 index 00000000000..57aecebd8ba --- /dev/null +++ b/llvm/test/Transforms/Inline/array-alloca.ll @@ -0,0 +1,36 @@ +; RUN: opt -inline -S < %s | FileCheck %s +%struct.A = type { i32 } + +define void @callee1(i32 %M) { +entry: + %vla = alloca i32, i32 %M, align 16 + ret void +} + +define void @callee2(i32 %M) { +entry: + %vla = alloca %struct.A, i32 %M, align 16 + ret void +} + +define void @callee3(i128 %M) { +entry: + %vla = alloca i32, i128 %M, align 16 + ret void +} + +; CHECK-LABEL: @caller +define void @caller() #0 { +entry: + call void @caller() +; CHECK-NOT: call void @callee1 + call void @callee1(i32 256) +; CHECK: call void @callee2 + call void @callee2(i32 4096) +; CHECK: call void @callee3 +; This is to test that there is no overflow in computing allocated size +; call void @callee3(i128 0x8000000000000000); + call void @callee3(i128 9223372036854775808); + ret void +} + |