blob: 31df018206b5d82d2e62abbb0ebd12df822c3a3d [file] [log] [blame]
Mike Stump8408db32009-10-08 21:52:07 +00001// RUN: clang-cc -emit-llvm %s -o - | FileCheck %s
2// 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)
26// CHECK: addrspace(3)
27// CHECK: addrspace(3)
28// CHECK: addrspace(1)
29// CHECK: addrspace(1)
30// CHECK: addrspace(1)
31// CHECK: addrspace(1)
32// CHECK: addrspace(1)
33// CHECK: addrspace(1)
34// CHECK: addrspace(1)
35// CHECK: addrspace(1)
36// CHECK: addrspace(1)
37// CHECK: addrspace(2)
38// CHECK: addrspace(1)
39// CHECK: addrspace(2)
40// CHECK: addrspace(2)
41// CHECK: addrspace(2)
Mon P Wangc6a38a42009-07-22 03:08:17 +000042
43// Check the load and store are using the correct address space to access
44// the variables.
45
46#define __addr1 __attribute__((address_space(1)))
47#define __addr2 __attribute__((address_space(2)))
48#define __addr3 __attribute__((address_space(3)))
49
50typedef struct Pair {
51 __addr2 int* a;
52 __addr3 int* b;
53} Pair;
54
55typedef struct S {
56 Pair arr[ 3 ];
57} S;
58
59void test_addrspace(__addr1 S* p1, __addr1 S* p2) {
60 *p1->arr[0].a = *p2->arr[1].b;
61}