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