attr-print.c revision aa9df09729fb8aee3e645549e95fcb413306a7aa
18dd070edc2209ecfdae49780ec1596b349e2cbd1Jakob Stoklund Olesen// RUN: %clang_cc1 %s -ast-print -fms-extensions | FileCheck %s
28ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesen
38ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesen// CHECK: int x __attribute__((aligned(4)));
48ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesenint x __attribute__((aligned(4)));
58ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesen
68ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesen// FIXME: Print this at a valid location for a __declspec attr.
78ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesen// CHECK: int y __declspec(align(4));
88ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesen__declspec(align(4)) int y;
98ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesen
108ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesen// CHECK: void foo() __attribute__((const));
118ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesenvoid foo() __attribute__((const));
128ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesen
138ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesen// CHECK: void bar() __attribute__((__const));
148ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesenvoid bar() __attribute__((__const));
158ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesen
168d0963f72c8922bafffb36ff49b18064098a3cabJakob Stoklund Olesen// CHECK: int * __ptr32 p32;
17f0179004e94259a8adab6c48f295ea9ab18af4c3Jakob Stoklund Olesenint * __ptr32 p32;
188ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesen
198ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesen// CHECK: int * __ptr64 p64;
208ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesenint * __ptr64 p64;
218ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesen
228ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesen// TODO: the Type Printer has no way to specify the order to print attributes
23a17768f5822ab62bc18608e5ba473187bf726b84Jakob Stoklund Olesen// in, and so it currently always prints them in reverse order. Fix this.
248ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesen// CHECK: int * __ptr32 __uptr p32_2;
258ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesenint * __uptr __ptr32 p32_2;
268ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesen
27f0179004e94259a8adab6c48f295ea9ab18af4c3Jakob Stoklund Olesen// CHECK: int * __ptr64 __sptr p64_2;
286a0dc079efe7acf7e71cc4c0948fe814f35ba091Jakob Stoklund Olesenint * __sptr __ptr64 p64_2;
29cfa7134a9c33c0c7f8dda359c89dc6763a258e07Jakob Stoklund Olesen
30f0179004e94259a8adab6c48f295ea9ab18af4c3Jakob Stoklund Olesen// CHECK: int * __ptr32 __uptr p32_3;
31f0179004e94259a8adab6c48f295ea9ab18af4c3Jakob Stoklund Olesenint * __uptr __ptr32 p32_3;
32532de3dc6ea98387368954c0ac0e07b0adca8b62Jakob Stoklund Olesen
338ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesen// CHECK: int * __sptr * __ptr32 ppsp32;
34e1dde7b05a83438eeba4bd83f8cf080f56d22c5bJakob Stoklund Olesenint * __sptr * __ptr32 ppsp32;
35e1dde7b05a83438eeba4bd83f8cf080f56d22c5bJakob Stoklund Olesen