summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGenOpenCL
diff options
context:
space:
mode:
authorMatt Arsenault <Matthew.Arsenault@amd.com>2014-04-17 17:45:37 +0000
committerMatt Arsenault <Matthew.Arsenault@amd.com>2014-04-17 17:45:37 +0000
commit10e3ef8d2df8e578d620518ee36febe5c236523a (patch)
treed079217fadc73b72cd629fb50f29635456975325 /clang/test/CodeGenOpenCL
parentda1c510ea6116060bccfde5728cdb9fb137a2c36 (diff)
downloadbcm5719-llvm-10e3ef8d2df8e578d620518ee36febe5c236523a.tar.gz
bcm5719-llvm-10e3ef8d2df8e578d620518ee36febe5c236523a.zip
Bug 18567: Fix constantexpr pointer casts with address spaces.
Getting a pointer into a struct at a non-zero offset would try to use the default address space. llvm-svn: 206478
Diffstat (limited to 'clang/test/CodeGenOpenCL')
-rw-r--r--clang/test/CodeGenOpenCL/address-space-constant-initializers.cl20
1 files changed, 20 insertions, 0 deletions
diff --git a/clang/test/CodeGenOpenCL/address-space-constant-initializers.cl b/clang/test/CodeGenOpenCL/address-space-constant-initializers.cl
new file mode 100644
index 00000000000..ae8cedc1ca5
--- /dev/null
+++ b/clang/test/CodeGenOpenCL/address-space-constant-initializers.cl
@@ -0,0 +1,20 @@
+// RUN: %clang_cc1 %s -ffake-address-space-map -emit-llvm -o - | FileCheck %s
+
+typedef struct {
+ int i;
+ float f; // At non-zero offset.
+} ArrayStruct;
+
+__constant ArrayStruct constant_array_struct = { 0, 0.0f };
+
+typedef struct {
+ __constant float* constant_float_ptr;
+} ConstantArrayPointerStruct;
+
+// CHECK: %struct.ConstantArrayPointerStruct = type { float addrspace(3)* }
+// CHECK: addrspace(3) global %struct.ConstantArrayPointerStruct { float addrspace(3)* bitcast (i8 addrspace(3)* getelementptr (i8 addrspace(3)* bitcast (%struct.ArrayStruct addrspace(3)* @constant_array_struct to i8 addrspace(3)*), i64 4) to float addrspace(3)*) }
+// Bug 18567
+__constant ConstantArrayPointerStruct constant_array_pointer_struct = {
+ &constant_array_struct.f
+};
+
OpenPOWER on IntegriCloud