I propose a new attribute for C++, labelled gnu::extended. This attribute is for asm declarations, and the attribute marks them as extended asm. This attribute shall contain all of the features of existing extended asm, but also have additional features, described below. gnu::extended(OutputOperands, InputOperands, Clobbers, Labels, Attributes) OutputOperands - Output Operands, in the exact same syntax as existing extended asm Example: [result] "r" (variable) InputOperands - Input Operands, in the same syntax as existing extended asm. Different from extended asm is the fact that the Input Operands in the extended attribute can take method calls as proper inputs Example: [parameter] "r" (method(2)) This will likely require some patching in the assembly declaration Clobbers - String Literal containing clobbered registers, in the same syntax as existing extended asm, but each string literal is separated by spaces rather than commas Labels - List of Goto Labels, in the same syntax as existing extended asm Attributes - List of tokens indicating certain attributes this asm declaration should have, these are: singleton: The asm declaration is only emitted once in the method body that it is in, subsequent appearances of any asm declarations with the singleton directive specified are discarded count "asm name": The asm declaration is only emitted once in the method body that it is in, subsequent appearances of any asm declarations with the count directive will simply update %[asm name] in the string literal template of the very first instance to the number of times the asm declaration has appeared in the method, including the first time it has appeared stack: Forces appearances of %= within the asm declaration to have stack semantics, that is, references to labels with %= will refer to the innermost declaration, and each subsequent reference to such labels will refer to the previous declaration before the innermost declaration, and so on.This is particularly useful for using labels defined across multiple asm declarations volatile: Functions the same as extended asm declared as asm volatile (""); patch: For input operands, the patch directive causes the operand code to be patched into the asm declaration directly above the line of asm code that uses the operand, rather than before the asm declaration itself, as is done for existing extended asm These are the list of features available for this new proposed attribute, thoughts? best regards, Julian