1/* { dg-do compile } */ 2/* { dg-options "" } */ 3 4#define CONCAT_(A,B) A ## B 5#define CONCAT(A,B) CONCAT_(A,B) 6 7#define ATTR __attribute__((AT)) 8#define ATSYM(suf) CONCAT (AT, CONCAT_ (_, suf)) 9 10#define AT noinline 11 12typedef int ATSYM(type) ATTR; /* { dg-warning "attribute ignored" "" } */ 13 14typedef int (*ATSYM(fntype))(void) ATTR; /* { dg-warning "attribute ignored" "" } */ 15 16struct ATSYM(struct) { 17 char dummy ATTR; /* { dg-warning "attribute ignored" "" } */ 18} ATTR; /* { dg-warning "does not apply to types" "" } */ 19 20int ATSYM(var) ATTR; /* { dg-warning "attribute ignored" "" } */ 21 22int ATSYM(fn_knrarg) (arg) 23 int arg ATTR; /* { dg-warning "attribute ignored" "" } */ 24{ return 0; } 25 26int ATSYM(fn_isoarg) (int arg ATTR) { return 0; } /* { dg-warning "attribute ignored" "" } */ 27 28int ATSYM(fn_vars) (void) { 29 static int svar ATTR; /* { dg-warning "attribute ignored" "" } */ 30 auto int lvar ATTR; /* { dg-warning "attribute ignored" "" } */ 31 return 0; 32} 33 34 35#undef AT 36#define AT used 37 38typedef int ATSYM(type) ATTR; /* { dg-warning "attribute ignored" "" } */ 39 40typedef int (*ATSYM(fntype))(void) ATTR; /* { dg-warning "attribute ignored" "" } */ 41 42struct ATSYM(struct) { 43 char dummy ATTR; /* { dg-warning "attribute ignored" "" } */ 44} ATTR; /* { dg-warning "does not apply to types" "" } */ 45 46int ATSYM(var) ATTR; 47 48int ATSYM(fn_knrarg) (arg) 49 int arg ATTR; /* { dg-warning "attribute ignored" "" } */ 50{ return 0; } 51 52int ATSYM(fn_isoarg) (int arg ATTR) { return 0; } /* { dg-warning "attribute ignored" "" } */ 53 54int ATSYM(fn_vars) (void) { 55 static int svar ATTR; 56 auto int lvar ATTR; /* { dg-warning "attribute ignored" "" } */ 57 return 0; 58} 59