blob: a896ab652d98d1df08d8aef24a3ad4ca335b9f4f [file] [log] [blame]
Daniel Dunbara5728872009-12-15 20:14:24 +00001// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
Mike Stump8408db32009-10-08 21:52:07 +00002// CHECK: addrspace(2)
3// CHECK: addrspace(3)
4// CHECK: addrspace(1)
5// CHECK: addrspace(1)
6// CHECK: addrspace(1)
7// CHECK: addrspace(1)
8// CHECK: addrspace(1)
9// CHECK: addrspace(1)
10// CHECK: addrspace(1)
11// CHECK: addrspace(1)
12// CHECK: addrspace(1)
13// CHECK: addrspace(1)
14// CHECK: addrspace(1)
15// CHECK: addrspace(1)
16// CHECK: addrspace(1)
17// CHECK: addrspace(1)
18// CHECK: addrspace(1)
19// CHECK: addrspace(1)
20// CHECK: addrspace(1)
21// CHECK: addrspace(1)
22// CHECK: addrspace(1)
23// CHECK: addrspace(3)
24// CHECK: addrspace(3)
25// CHECK: addrspace(1)
Mike Stump8408db32009-10-08 21:52:07 +000026// CHECK: addrspace(1)
27// CHECK: addrspace(1)
28// CHECK: addrspace(1)
29// CHECK: addrspace(1)
30// CHECK: addrspace(1)
31// CHECK: addrspace(1)
32// CHECK: addrspace(1)
33// CHECK: addrspace(1)
Mike Stump8408db32009-10-08 21:52:07 +000034// CHECK: addrspace(2)
35// CHECK: addrspace(2)
Mon P Wangc6a38a42009-07-22 03:08:17 +000036
37// Check the load and store are using the correct address space to access
38// the variables.
39
40#define __addr1 __attribute__((address_space(1)))
41#define __addr2 __attribute__((address_space(2)))
42#define __addr3 __attribute__((address_space(3)))
43
44typedef struct Pair {
45 __addr2 int* a;
46 __addr3 int* b;
47} Pair;
48
49typedef struct S {
50 Pair arr[ 3 ];
51} S;
52
53void test_addrspace(__addr1 S* p1, __addr1 S* p2) {
54 *p1->arr[0].a = *p2->arr[1].b;
55}