summaryrefslogtreecommitdiffstats
path: root/llvm/test/Verifier/bitcast-vector-pointer-pos.ll
diff options
context:
space:
mode:
authorSerguei Katkov <serguei.katkov@azul.com>2018-08-21 04:27:07 +0000
committerSerguei Katkov <serguei.katkov@azul.com>2018-08-21 04:27:07 +0000
commit09ab5067983477e206532f4fdcf7dadcbc54b724 (patch)
treec76b1136d1c0928ff8187782c5c86f8bf4aa9583 /llvm/test/Verifier/bitcast-vector-pointer-pos.ll
parentefef49cd2fb68d0f3ab6fc3022f4b964352ac58d (diff)
downloadbcm5719-llvm-09ab5067983477e206532f4fdcf7dadcbc54b724.tar.gz
bcm5719-llvm-09ab5067983477e206532f4fdcf7dadcbc54b724.zip
[IR Verifier] Do not allow bitcast of pointer to vector of pointers and vice versa.
LangRef for BitCast requires that "The bit sizes of value and the destination type, ty2, must be identical". Currently verifier allows BitCast of pointer to vector of pointers so that the sizes are different. This change fixes that. Reviewers: arsenm Reviewed By: arsenm Subscribers: llvm-commits, wdng Differential Revision: https://reviews.llvm.org/D50886 llvm-svn: 340249
Diffstat (limited to 'llvm/test/Verifier/bitcast-vector-pointer-pos.ll')
-rw-r--r--llvm/test/Verifier/bitcast-vector-pointer-pos.ll14
1 files changed, 14 insertions, 0 deletions
diff --git a/llvm/test/Verifier/bitcast-vector-pointer-pos.ll b/llvm/test/Verifier/bitcast-vector-pointer-pos.ll
new file mode 100644
index 00000000000..6a08f1135c8
--- /dev/null
+++ b/llvm/test/Verifier/bitcast-vector-pointer-pos.ll
@@ -0,0 +1,14 @@
+; RUN: llvm-as -disable-output %s
+
+target datalayout = "e-p:32:32:32-p1:16:16:16-p2:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:32:64-v128:32:128-a0:0:32-n8:16:32"
+
+define <1 x i32*> @vector_legal_bitcast_pointer_to_vector_of_pointers(i64* %a) {
+ %b = bitcast i64* %a to <1 x i32*>
+ ret <1 x i32*> %b
+}
+
+define i64* @vector_legal_bitcast_vector_of_pointers_to_pointer(<1 x i32*> %a) {
+ %b = bitcast <1 x i32*> %a to i64*
+ ret i64* %b
+}
+
OpenPOWER on IntegriCloud