16bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s 26bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines 36bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinesint i __attribute__((flatten)); // expected-error {{'flatten' attribute only applies to functions}} 46bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines 56bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinesvoid f1() __attribute__((flatten)); 66bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinesvoid f2() __attribute__((flatten(1))); // expected-error {{'flatten' attribute takes no arguments}} 76bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines 86bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinestemplate <typename T> 96bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinesvoid tf1() __attribute__((flatten)); 106bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines 116bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinesint f3(int __attribute__((flatten)), int); // expected-error{{'flatten' attribute only applies to functions}} 126bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines 136bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinesstruct A { 146bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines int f __attribute__((flatten)); // expected-error{{'flatten' attribute only applies to functions}} 156bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines void mf1() __attribute__((flatten)); 166bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines static void mf2() __attribute__((flatten)); 176bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines}; 186bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines 196bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinesint ci [[gnu::flatten]]; // expected-error {{'flatten' attribute only applies to functions}} 206bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines 216bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines[[gnu::flatten]] void cf1(); 226bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines[[gnu::flatten(1)]] void cf2(); // expected-error {{'flatten' attribute takes no arguments}} 236bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines 246bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinestemplate <typename T> 256bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines[[gnu::flatten]] 266bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinesvoid ctf1(); 276bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines 286bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinesint cf3(int c[[gnu::flatten]], int); // expected-error{{'flatten' attribute only applies to functions}} 296bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines 306bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinesstruct CA { 316bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines int f [[gnu::flatten]]; // expected-error{{'flatten' attribute only applies to functions}} 326bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines [[gnu::flatten]] void mf1(); 336bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines [[gnu::flatten]] static void mf2(); 346bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines}; 35