15cd532ca0bc1cb8110e24586d064f72332d8b767Richard Smith// RUN: %clang_cc1 %s -ast-print -fms-extensions | FileCheck %s
251d8c52ad36129760eaa586f85176037e2cd0d0eMichael Han
3a31f65b10e61ca8f2f427b1df176c10ea8a0efa2Michael Han// CHECK: int x __attribute__((aligned(4)));
451d8c52ad36129760eaa586f85176037e2cd0d0eMichael Hanint x __attribute__((aligned(4)));
551d8c52ad36129760eaa586f85176037e2cd0d0eMichael Han
65cd532ca0bc1cb8110e24586d064f72332d8b767Richard Smith// FIXME: Print this at a valid location for a __declspec attr.
7a31f65b10e61ca8f2f427b1df176c10ea8a0efa2Michael Han// CHECK: int y __declspec(align(4));
85cd532ca0bc1cb8110e24586d064f72332d8b767Richard Smith__declspec(align(4)) int y;
951d8c52ad36129760eaa586f85176037e2cd0d0eMichael Han
1051d8c52ad36129760eaa586f85176037e2cd0d0eMichael Han// CHECK: void foo() __attribute__((const));
1151d8c52ad36129760eaa586f85176037e2cd0d0eMichael Hanvoid foo() __attribute__((const));
1251d8c52ad36129760eaa586f85176037e2cd0d0eMichael Han
1351d8c52ad36129760eaa586f85176037e2cd0d0eMichael Han// CHECK: void bar() __attribute__((__const));
1451d8c52ad36129760eaa586f85176037e2cd0d0eMichael Hanvoid bar() __attribute__((__const));
15cae4a5ca43323eb861d702f880a6c62dd5ef4fc5Richard Smith
16aa9df09729fb8aee3e645549e95fcb413306a7aaAaron Ballman// CHECK: int * __ptr32 p32;
17cae4a5ca43323eb861d702f880a6c62dd5ef4fc5Richard Smithint * __ptr32 p32;
18cae4a5ca43323eb861d702f880a6c62dd5ef4fc5Richard Smith
19aa9df09729fb8aee3e645549e95fcb413306a7aaAaron Ballman// CHECK: int * __ptr64 p64;
20cae4a5ca43323eb861d702f880a6c62dd5ef4fc5Richard Smithint * __ptr64 p64;
21aa9df09729fb8aee3e645549e95fcb413306a7aaAaron Ballman
22aa9df09729fb8aee3e645549e95fcb413306a7aaAaron Ballman// TODO: the Type Printer has no way to specify the order to print attributes
23aa9df09729fb8aee3e645549e95fcb413306a7aaAaron Ballman// in, and so it currently always prints them in reverse order. Fix this.
24aa9df09729fb8aee3e645549e95fcb413306a7aaAaron Ballman// CHECK: int * __ptr32 __uptr p32_2;
25aa9df09729fb8aee3e645549e95fcb413306a7aaAaron Ballmanint * __uptr __ptr32 p32_2;
26aa9df09729fb8aee3e645549e95fcb413306a7aaAaron Ballman
27aa9df09729fb8aee3e645549e95fcb413306a7aaAaron Ballman// CHECK: int * __ptr64 __sptr p64_2;
28aa9df09729fb8aee3e645549e95fcb413306a7aaAaron Ballmanint * __sptr __ptr64 p64_2;
29aa9df09729fb8aee3e645549e95fcb413306a7aaAaron Ballman
30aa9df09729fb8aee3e645549e95fcb413306a7aaAaron Ballman// CHECK: int * __ptr32 __uptr p32_3;
31aa9df09729fb8aee3e645549e95fcb413306a7aaAaron Ballmanint * __uptr __ptr32 p32_3;
32aa9df09729fb8aee3e645549e95fcb413306a7aaAaron Ballman
33aa9df09729fb8aee3e645549e95fcb413306a7aaAaron Ballman// CHECK: int * __sptr * __ptr32 ppsp32;
34aa9df09729fb8aee3e645549e95fcb413306a7aaAaron Ballmanint * __sptr * __ptr32 ppsp32;
354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK: __attribute__((availability(macos, strict, introduced=10.6)));
374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarvoid f6(int) __attribute__((availability(macosx,strict,introduced=10.6)));
38