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