diff options
Diffstat (limited to 'gcc/gimple.h')
-rw-r--r-- | gcc/gimple.h | 36 |
1 files changed, 32 insertions, 4 deletions
diff --git a/gcc/gimple.h b/gcc/gimple.h index b539623..e1e3b65 100644 --- a/gcc/gimple.h +++ b/gcc/gimple.h @@ -553,10 +553,11 @@ struct GTY(()) gimple_statement_asm const char *string; /* [ WORD 10 ] - Number of inputs, outputs and clobbers. */ + Number of inputs, outputs, clobbers, labels. */ unsigned char ni; unsigned char no; - unsigned short nc; + unsigned char nc; + unsigned char nl; /* [ WORD 11 ] Operand vector. NOTE! This must always be the last field @@ -792,9 +793,8 @@ gimple gimple_build_label (tree label); gimple gimple_build_goto (tree dest); gimple gimple_build_nop (void); gimple gimple_build_bind (tree, gimple_seq, tree); -gimple gimple_build_asm (const char *, unsigned, unsigned, unsigned, ...); gimple gimple_build_asm_vec (const char *, VEC(tree,gc) *, VEC(tree,gc) *, - VEC(tree,gc) *); + VEC(tree,gc) *, VEC(tree,gc) *); gimple gimple_build_catch (tree, gimple_seq); gimple gimple_build_eh_filter (tree, gimple_seq); gimple gimple_build_eh_must_not_throw (tree); @@ -2614,6 +2614,14 @@ gimple_asm_nclobbers (const_gimple gs) return gs->gimple_asm.nc; } +/* Return the number of label operands for GIMPLE_ASM GS. */ + +static inline unsigned +gimple_asm_nlabels (const_gimple gs) +{ + GIMPLE_CHECK (gs, GIMPLE_ASM); + return gs->gimple_asm.nl; +} /* Return input operand INDEX of GIMPLE_ASM GS. */ @@ -2703,6 +2711,26 @@ gimple_asm_set_clobber_op (gimple gs, unsigned index, tree clobber_op) gimple_set_op (gs, index + gs->gimple_asm.ni + gs->gimple_asm.no, clobber_op); } +/* Return label operand INDEX of GIMPLE_ASM GS. */ + +static inline tree +gimple_asm_label_op (const_gimple gs, unsigned index) +{ + GIMPLE_CHECK (gs, GIMPLE_ASM); + gcc_assert (index <= gs->gimple_asm.nl); + return gimple_op (gs, index + gs->gimple_asm.ni + gs->gimple_asm.nc); +} + +/* Set LABEL_OP to be label operand INDEX in GIMPLE_ASM GS. */ + +static inline void +gimple_asm_set_label_op (gimple gs, unsigned index, tree label_op) +{ + GIMPLE_CHECK (gs, GIMPLE_ASM); + gcc_assert (index <= gs->gimple_asm.nl); + gcc_assert (TREE_CODE (label_op) == TREE_LIST); + gimple_set_op (gs, index + gs->gimple_asm.ni + gs->gimple_asm.nc, label_op); +} /* Return the string representing the assembly instruction in GIMPLE_ASM GS. */ |