https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110734
--- Comment #17 from Julian Waters <tanksherman27 at gmail dot com> --- Looking at the source of the C++ parser it doesn't seem like asm (""); is considered a statement but rather is correctly parsed as a declaration, see cp_parser_block_declaration and cp_parser_declaration_statement. The no_reorder attribute is just a demonstration, I am aware it is not meant for asm declarations, rather the error is in how the error message is formed, eg error: expected primary-expression before 'asm' instead of error: expected primary-expression before 'asm'