diff options
author | Reid Kleckner <rnk@google.com> | 2017-04-19 23:17:47 +0000 |
---|---|---|
committer | Reid Kleckner <rnk@google.com> | 2017-04-19 23:17:47 +0000 |
commit | aa0cec7d6dbe602af9e0f9f0bb89eb750856baf2 (patch) | |
tree | 0e4eec163db663231905026cdcd438df48186298 /llvm/test/Transforms | |
parent | 2cc97d92cebd112861c05eda3755af8661148015 (diff) | |
download | bcm5719-llvm-aa0cec7d6dbe602af9e0f9f0bb89eb750856baf2.tar.gz bcm5719-llvm-aa0cec7d6dbe602af9e0f9f0bb89eb750856baf2.zip |
Simplify test for sret attribute in instcombine
This change is correct because the verifier requires that at most one
argument be marked 'sret'.
NFC, removes a use of AttributeList slot APIs.
llvm-svn: 300784
Diffstat (limited to 'llvm/test/Transforms')
-rw-r--r-- | llvm/test/Transforms/InstCombine/2008-01-13-NoBitCastAttributes.ll | 15 | ||||
-rw-r--r-- | llvm/test/Transforms/InstCombine/call-cast-attrs.ll | 29 |
2 files changed, 29 insertions, 15 deletions
diff --git a/llvm/test/Transforms/InstCombine/2008-01-13-NoBitCastAttributes.ll b/llvm/test/Transforms/InstCombine/2008-01-13-NoBitCastAttributes.ll deleted file mode 100644 index 510a68c3437..00000000000 --- a/llvm/test/Transforms/InstCombine/2008-01-13-NoBitCastAttributes.ll +++ /dev/null @@ -1,15 +0,0 @@ -; RUN: opt < %s -instcombine -S | grep bitcast | count 2 - -define signext i32 @b(i32* inreg %x) { - ret i32 0 -} - -define void @c(...) { - ret void -} - -define void @g(i32* %y) { - call i32 bitcast (i32 (i32*)* @b to i32 (i32)*)( i32 zeroext 0 ) ; <i32>:2 [#uses=0] - call void bitcast (void (...)* @c to void (i32*)*)( i32* sret null ) - ret void -} diff --git a/llvm/test/Transforms/InstCombine/call-cast-attrs.ll b/llvm/test/Transforms/InstCombine/call-cast-attrs.ll new file mode 100644 index 00000000000..ddaf90c3e74 --- /dev/null +++ b/llvm/test/Transforms/InstCombine/call-cast-attrs.ll @@ -0,0 +1,29 @@ +; RUN: opt < %s -instcombine -S | FileCheck %s + +define signext i32 @b(i32* inreg %x) { + ret i32 0 +} + +define void @c(...) { + ret void +} + +declare void @useit(i32) + +define void @d(i32 %x, ...) { + call void @useit(i32 %x) + ret void +} + +define void @g(i32* %y) { + call i32 bitcast (i32 (i32*)* @b to i32 (i32)*)(i32 zeroext 0) + call void bitcast (void (...)* @c to void (i32*)*)(i32* %y) + call void bitcast (void (...)* @c to void (i32*)*)(i32* sret %y) + call void bitcast (void (i32, ...)* @d to void (i32, i32*)*)(i32 0, i32* sret %y) + ret void +} +; CHECK-LABEL: define void @g(i32* %y) +; CHECK: call i32 bitcast (i32 (i32*)* @b to i32 (i32)*)(i32 zeroext 0) +; CHECK: call void (...) @c(i32* %y) +; CHECK: call void bitcast (void (...)* @c to void (i32*)*)(i32* sret %y) +; CHECK: call void bitcast (void (i32, ...)* @d to void (i32, i32*)*)(i32 0, i32* sret %y) |