aboutsummaryrefslogtreecommitdiffstats
path: root/test/Transforms/InstCombine
diff options
context:
space:
mode:
authorJim Grosbach <grosbach@apple.com>2012-02-01 00:08:17 +0000
committerJim Grosbach <grosbach@apple.com>2012-02-01 00:08:17 +0000
commitd0e277d272d517ca1cda368267d199f0da7cad95 (patch)
tree632f0e1cf045667d851f80f4ad3cc8472de1e8db /test/Transforms/InstCombine
parent24dda217052b48373ed89d043a778aabb2f65080 (diff)
downloadexternal_llvm-d0e277d272d517ca1cda368267d199f0da7cad95.zip
external_llvm-d0e277d272d517ca1cda368267d199f0da7cad95.tar.gz
external_llvm-d0e277d272d517ca1cda368267d199f0da7cad95.tar.bz2
Disable InstCombine unsafe folding bitcasts of calls w/ varargs.
Changing arguments from being passed as fixed to varargs is unsafe, as the ABI may require they be handled differently (stack vs. register, for example). Remove two tests which rely on the bitcast being folded into the direct call, which is exactly the transformation that's unsafe. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149457 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Transforms/InstCombine')
-rw-r--r--test/Transforms/InstCombine/2008-01-06-BitCastAttributes.ll23
-rw-r--r--test/Transforms/InstCombine/call.ll14
2 files changed, 0 insertions, 37 deletions
diff --git a/test/Transforms/InstCombine/2008-01-06-BitCastAttributes.ll b/test/Transforms/InstCombine/2008-01-06-BitCastAttributes.ll
deleted file mode 100644
index 23b6067..0000000
--- a/test/Transforms/InstCombine/2008-01-06-BitCastAttributes.ll
+++ /dev/null
@@ -1,23 +0,0 @@
-; Ignore stderr, we expect warnings there
-; RUN: opt < %s -instcombine 2> /dev/null -S | not grep bitcast
-
-define void @a() {
- ret void
-}
-
-define signext i32 @b(i32* inreg %x) {
- ret i32 0
-}
-
-define void @c(...) {
- ret void
-}
-
-define void @g(i32* %y) {
- call void bitcast (void ()* @a to void (i32*)*)( i32* noalias %y )
- call <2 x i32> bitcast (i32 (i32*)* @b to <2 x i32> (i32*)*)( i32* inreg null ) ; <<2 x i32>>:1 [#uses=0]
- %x = call i64 bitcast (i32 (i32*)* @b to i64 (i32)*)( i32 0 ) ; <i64> [#uses=0]
- call void bitcast (void (...)* @c to void (i32)*)( i32 0 )
- call void bitcast (void (...)* @c to void (i32)*)( i32 zeroext 0 )
- ret void
-}
diff --git a/test/Transforms/InstCombine/call.ll b/test/Transforms/InstCombine/call.ll
index 96ec420..ca36484 100644
--- a/test/Transforms/InstCombine/call.ll
+++ b/test/Transforms/InstCombine/call.ll
@@ -30,20 +30,6 @@ define i32 @test2(i32 %A) {
}
-; Resolving this should insert a cast from sbyte to int, following the C
-; promotion rules.
-define void @test3a(i8, ...) {unreachable }
-
-define void @test3(i8 %A, i8 %B) {
- call void bitcast (void (i8, ...)* @test3a to void (i8, i8)*)( i8 %A, i8 %B
-)
- ret void
-; CHECK: %1 = zext i8 %B to i32
-; CHECK: call void (i8, ...)* @test3a(i8 %A, i32 %1)
-; CHECK: ret void
-}
-
-
; test conversion of return value...
define i8 @test4a() {
ret i8 0