Asm-name-spec
Fixtype of GCC assembler name specifiers.
This is a product type introduced by fty::defprod.
Fields
- strings — stringlit-list
- uscores — keyword-uscores
This captures the construct to specify assembler names. It consists of the keyword asm or __asm or __asm__
and a parenthesized string literal.
Since adjacent string literals may be concatenated [C:5.1.1.2/6],
we allow a list of string literals here;
this way, we preserve the fact that there were adjacent string literals.
Indeed, we have observed multiple (two, to be precise)
string literals in this construct in practical code.
We also capture which keyword variant (with or without underscores)
was used.
The GCC documentation does not provide a clear term
to denote this construct,
although the URL suggests that it is an `assembler label';
but the text does not mention that term.
Note that this is not the only kind of assembler construct
in GCC extensions; there are others.
So we use the term `assembler name specifier' for this construct,
since it specifies the assembler name (of an identifier).
We use a list of string literals,
which should be non-empty, although we do not capture this constraint.
This way, we preserve the information about adjacent string literals.
Subtopics
- Asm-name-spec-fix
- Fixing function for asm-name-spec structures.
- Asm-name-spec-equiv
- Basic equivalence relation for asm-name-spec structures.
- Make-asm-name-spec
- Basic constructor macro for asm-name-spec structures.
- Asm-name-spec->uscores
- Get the uscores field from a asm-name-spec.
- Asm-name-spec->strings
- Get the strings field from a asm-name-spec.
- Change-asm-name-spec
- Modifying constructor for asm-name-spec structures.
- Asm-name-specp
- Recognizer for asm-name-spec structures.