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