/* Test various erroneous or ignored uses of C2X attribute syntax. */ /* { dg-do compile } */ /* { dg-options "-fgnu-tm" } */ void f1 (void) { __transaction_atomic [[outer()]] {} /* { dg-error "does not take any arguments" } */ } void f2 (void) { __transaction_atomic [[not_a_tm_attribute]] {} /* { dg-warning "attribute directive ignored" } */ } void f3 (void) { __transaction_atomic [[unknown_attribute(args of *unknown* attributes need only (be {balanced[(({{[[]]}}))]}!), as per standard C)]] {} /* { dg-warning "attribute directive ignored" } */ } void f4 (void) { __transaction_atomic [[gnu::const]] {} /* { dg-warning "attribute directive ignored" } */ } void f5 (void) { __transaction_atomic [[bad_namespace::outer]] {} /* { dg-warning "attribute directive ignored" } */ } void f6 (void) { __transaction_atomic [[outer, outer]] {} /* { dg-warning "attribute duplicated" } */ }