GIMPLE sequences#
GIMPLE sequences are the tuple equivalent of STATEMENT_LIST ‘s
used in GENERIC. They are used to chain statements together, and
when used in conjunction with sequence iterators, provide a
framework for iterating through statements.
GIMPLE sequences are of type struct gimple_sequence, but are more
commonly passed by reference to functions dealing with sequences.
The type for a sequence pointer is gimple_seq which is the same
as struct gimple_sequence *. When declaring a local sequence,
you can define a local variable of type struct gimple_sequence.
When declaring a sequence allocated on the garbage collected
heap, use the function gimple_seq_alloc documented below.
There are convenience functions for iterating through sequences in the section entitled Sequence Iterators.
Below is a list of functions to manipulate and query sequences.
-
void gimple_seq_add_stmt(gimple_seq *seq, gimple g)#
Link a gimple statement to the end of the sequence *
SEQifGis notNULL. If *SEQisNULL, allocate a sequence before linking.
-
void gimple_seq_add_seq(gimple_seq *dest, gimple_seq src)#
Append sequence
SRCto the end of sequence *DESTifSRCis notNULL. If *DESTisNULL, allocate a new sequence before appending.
-
gimple_seq gimple_seq_deep_copy(gimple_seq src)#
Perform a deep copy of sequence
SRCand return the result.
-
gimple_seq gimple_seq_reverse(gimple_seq seq)#
Reverse the order of the statements in the sequence
SEQ. ReturnSEQ.
-
gimple gimple_seq_first(gimple_seq s)#
Return the first statement in sequence
S.
-
gimple gimple_seq_last(gimple_seq s)#
Return the last statement in sequence
S.
-
void gimple_seq_set_last(gimple_seq s, gimple last)#
Set the last statement in sequence
Sto the statement inLAST.
-
void gimple_seq_set_first(gimple_seq s, gimple first)#
Set the first statement in sequence
Sto the statement inFIRST.
-
void gimple_seq_init(gimple_seq s)#
Initialize sequence
Sto an empty sequence.
-
gimple_seq gimple_seq_alloc(void)#
Allocate a new sequence in the garbage collected store and return it.
-
void gimple_seq_copy(gimple_seq dest, gimple_seq src)#
Copy the sequence
SRCinto the sequenceDEST.
-
bool gimple_seq_empty_p(gimple_seq s)#
Return true if the sequence
Sis empty.
-
gimple_seq bb_seq(basic_block bb)#
Returns the sequence of statements in
BB.
-
void set_bb_seq(basic_block bb, gimple_seq seq)#
Sets the sequence of statements in
BBtoSEQ.
-
bool gimple_seq_singleton_p(gimple_seq seq)#
Determine whether
SEQcontains exactly one statement.