1*67e74705SXin Li // RUN: %clang_cc1 -std=c++11 -ast-print -fms-extensions %s | FileCheck %s 2*67e74705SXin Li // 3*67e74705SXin Li // CHECK: int x __attribute__((aligned(4))); 4*67e74705SXin Li int x __attribute__((aligned(4))); 5*67e74705SXin Li 6*67e74705SXin Li // FIXME: Print this at a valid location for a __declspec attr. 7*67e74705SXin Li // CHECK: int y __declspec(align(4)); 8*67e74705SXin Li __declspec(align(4)) int y; 9*67e74705SXin Li 10*67e74705SXin Li // CHECK: int z {{\[}}[gnu::aligned(4)]]; 11*67e74705SXin Li int z [[gnu::aligned(4)]]; 12*67e74705SXin Li 13*67e74705SXin Li // CHECK: __attribute__((deprecated("warning"))); 14*67e74705SXin Li int a __attribute__((deprecated("warning"))); 15*67e74705SXin Li 16*67e74705SXin Li // CHECK: int b {{\[}}[gnu::deprecated("warning")]]; 17*67e74705SXin Li int b [[gnu::deprecated("warning")]]; 18*67e74705SXin Li 19*67e74705SXin Li // CHECK: __declspec(deprecated("warning")) 20*67e74705SXin Li __declspec(deprecated("warning")) int c; 21*67e74705SXin Li 22*67e74705SXin Li // CHECK: int d {{\[}}[deprecated("warning")]]; 23*67e74705SXin Li int d [[deprecated("warning")]]; 24*67e74705SXin Li 25*67e74705SXin Li // CHECK: __attribute__((deprecated("warning", "fixit"))); 26*67e74705SXin Li int e __attribute__((deprecated("warning", "fixit"))); 27*67e74705SXin Li 28*67e74705SXin Li // CHECK: int cxx11_alignas alignas(4); 29*67e74705SXin Li alignas(4) int cxx11_alignas; 30*67e74705SXin Li 31*67e74705SXin Li // CHECK: int c11_alignas _Alignas(alignof(int)); 32*67e74705SXin Li _Alignas(int) int c11_alignas; 33*67e74705SXin Li 34*67e74705SXin Li // CHECK: void foo() __attribute__((const)); 35*67e74705SXin Li void foo() __attribute__((const)); 36*67e74705SXin Li 37*67e74705SXin Li // CHECK: void bar() __attribute__((__const)); 38*67e74705SXin Li void bar() __attribute__((__const)); 39*67e74705SXin Li 40*67e74705SXin Li // CHECK: int f1() __attribute__((warn_unused_result)); 41*67e74705SXin Li int f1() __attribute__((warn_unused_result)); 42*67e74705SXin Li 43*67e74705SXin Li // CHECK: {{\[}}[clang::warn_unused_result]]; 44*67e74705SXin Li int f2 [[clang::warn_unused_result]] (); 45*67e74705SXin Li 46*67e74705SXin Li // CHECK: {{\[}}[gnu::warn_unused_result]]; 47*67e74705SXin Li int f3 [[gnu::warn_unused_result]] (); 48*67e74705SXin Li 49*67e74705SXin Li // FIXME: ast-print need to print C++11 50*67e74705SXin Li // attribute after function declare-id. 51*67e74705SXin Li // CHECK: {{\[}}[noreturn]]; 52*67e74705SXin Li void f4 [[noreturn]] (); 53*67e74705SXin Li 54*67e74705SXin Li // CHECK: __attribute__((gnu_inline)); 55*67e74705SXin Li inline void f6() __attribute__((gnu_inline)); 56*67e74705SXin Li 57*67e74705SXin Li // CHECK: {{\[}}[gnu::gnu_inline]]; 58*67e74705SXin Li inline void f7 [[gnu::gnu_inline]] (); 59*67e74705SXin Li 60*67e74705SXin Li // arguments printing 61*67e74705SXin Li // CHECK: __attribute__((format(printf, 2, 3))); 62*67e74705SXin Li void f8 (void *, const char *, ...) __attribute__ ((format (printf, 2, 3))); 63*67e74705SXin Li 64*67e74705SXin Li // CHECK: int m __attribute__((aligned(4 65*67e74705SXin Li // CHECK: int n alignas(4 66*67e74705SXin Li // CHECK: static int f() __attribute__((pure)) 67*67e74705SXin Li // CHECK: static int g() {{\[}}[gnu::pure]] 68*67e74705SXin Li template <typename T> struct S { 69*67e74705SXin Li __attribute__((aligned(4))) int m; 70*67e74705SXin Li alignas(4) int n; fS71*67e74705SXin Li __attribute__((pure)) static int f() { 72*67e74705SXin Li return 0; 73*67e74705SXin Li } gS74*67e74705SXin Li [[gnu::pure]] static int g() { 75*67e74705SXin Li return 1; 76*67e74705SXin Li } 77*67e74705SXin Li }; 78*67e74705SXin Li 79*67e74705SXin Li // CHECK: int m __attribute__((aligned(4 80*67e74705SXin Li // CHECK: int n alignas(4 81*67e74705SXin Li // CHECK: static int f() __attribute__((pure)) 82*67e74705SXin Li // CHECK: static int g() {{\[}}[gnu::pure]] 83*67e74705SXin Li template struct S<int>; 84*67e74705SXin Li 85*67e74705SXin Li // CHECK: using Small2 {{\[}}[gnu::mode(byte)]] = int; 86*67e74705SXin Li using Small2 [[gnu::mode(byte)]] = int; 87