pub struct AsmStmt {
pub volatile: bool,
pub inline: bool,
pub goto: bool,
pub template: Spanned<String>,
pub extended: bool,
pub outputs: Vec<AsmOperand>,
pub inputs: Vec<AsmOperand>,
pub clobbers: Vec<Spanned<String>>,
pub labels: Vec<Ident>,
}Expand description
asm [volatile] [inline] [goto] ( template [: outputs [: inputs [: clobbers [: labels]]]] ) ; — GNU inline assembly.
The parser records what was written and nothing more: the template and
the constraints are opaque strings here (adjacent string literals already
concatenated), and deciding what they mean — and what of it asm! can
express — is sema’s business.
Fields§
§volatile: boolvolatile or __volatile__ was written.
inline: boolinline or __inline__ was written.
goto: boolgoto was written: the statement may jump to one of labels.
template: Spanned<String>The assembler template.
extended: boolWhether any colon section was written, which is what makes this
extended asm: GCC treats % in a basic asm template literally, and
asm("" :) as extended asm with no operands.
outputs: Vec<AsmOperand>The output operands, in order.
inputs: Vec<AsmOperand>The input operands, in order; GCC numbers them after the outputs.
clobbers: Vec<Spanned<String>>The clobber list: register names, "memory", "cc".
labels: Vec<Ident>The labels of an asm goto.