#### 12.7.1 `GIMPLE_ASM`

— GIMPLE function: gimple gimple_build_asm (const char *string, ninputs, noutputs, nclobbers, ...)

> Build a `GIMPLE_ASM` statement. This statement is used for building in-line assembly constructs. `STRING` is the assembly code. `NINPUT` is the number of register inputs. `NOUTPUT` is the number of register outputs. `NCLOBBERS` is the number of clobbered registers. The rest of the arguments trees for each input, output, and clobbered registers.

— GIMPLE function: gimple gimple_build_asm_vec (const char *, VEC(tree,gc) *, VEC(tree,gc) *, VEC(tree,gc) *)

> Identical to gimple_build_asm, but the arguments are passed in VECs.

— GIMPLE function: unsigned gimple_asm_ninputs (gimple g)

> Return the number of input operands for `GIMPLE_ASM` `G`.

— GIMPLE function: unsigned gimple_asm_noutputs (gimple g)

> Return the number of output operands for `GIMPLE_ASM` `G`.

— GIMPLE function: unsigned gimple_asm_nclobbers (gimple g)

> Return the number of clobber operands for `GIMPLE_ASM` `G`.

— GIMPLE function: tree gimple_asm_input_op (gimple g, unsigned index)

> Return input operand `INDEX` of `GIMPLE_ASM` `G`.

— GIMPLE function: void gimple_asm_set_input_op (gimple g, unsigned index, tree in_op)

> Set `IN_OP` to be input operand `INDEX` in `GIMPLE_ASM` `G`.

— GIMPLE function: tree gimple_asm_output_op (gimple g, unsigned index)

> Return output operand `INDEX` of `GIMPLE_ASM` `G`.

— GIMPLE function: void gimple_asm_set_output_op (gimple g, unsigned index, tree out_op)

> Set `OUT_OP` to be output operand `INDEX` in `GIMPLE_ASM` `G`.

— GIMPLE function: tree gimple_asm_clobber_op (gimple g, unsigned index)

> Return clobber operand `INDEX` of `GIMPLE_ASM` `G`.

— GIMPLE function: void gimple_asm_set_clobber_op (gimple g, unsigned index, tree clobber_op)

> Set `CLOBBER_OP` to be clobber operand `INDEX` in `GIMPLE_ASM` `G`.

— GIMPLE function: const char * gimple_asm_string (gimple g)

> Return the string representing the assembly instruction in `GIMPLE_ASM` `G`.

— GIMPLE function: bool gimple_asm_volatile_p (gimple g)

> Return true if `G` is an asm statement marked volatile.

— GIMPLE function: void gimple_asm_set_volatile (gimple g)

> Mark asm statement `G` as volatile.

— GIMPLE function: void gimple_asm_clear_volatile (gimple g)

> Remove volatile marker from asm statement `G`.