GCC Middle and Back End API Reference
walk_stmt_info Struct Reference

#include <gimple.h>

Collaboration diagram for walk_stmt_info:

Data Fields

gimple_stmt_iterator gsi
void * info
struct pointer_set_tpset
tree callback_result
BOOL_BITFIELD val_only: 1
BOOL_BITFIELD is_lhs: 1
BOOL_BITFIELD changed: 1
BOOL_BITFIELD want_locations: 1
BOOL_BITFIELD removed_stmt: 1

Detailed Description

Convenience routines to walk all statements of a gimple function. Note that this is useful exclusively before the code is converted into SSA form. Once the program is in SSA form, the standard operand interface should be used to analyze/modify statements.


Field Documentation

tree walk_stmt_info::callback_result

Operand returned by the callbacks. This is set when calling walk_gimple_seq. If the walk_stmt_fn or walk_tree_fn callback returns non-NULL, this field will contain the tree returned by the last callback.

Referenced by gimple_seq_add_seq().

BOOL_BITFIELD walk_stmt_info::changed

Optional. Set to true by the callback functions if they made any changes.

Referenced by get_local_debug_decl().

void* walk_stmt_info::info
BOOL_BITFIELD walk_stmt_info::is_lhs

True if we are currently walking the LHS of an assignment.

Referenced by count_ptr_derefs(), get_local_debug_decl(), note_nonlocal_vla_type(), walk_gimple_asm(), and walk_gimple_seq_mod().

struct pointer_set_t* walk_stmt_info::pset

Pointer map used to mark visited tree nodes when calling walk_tree on each operand. If set to NULL, duplicate tree nodes will be visited more than once.

Referenced by walk_gimple_seq().

BOOL_BITFIELD walk_stmt_info::removed_stmt

True if we've removed the statement that was processed.

Referenced by gimple_seq_add_seq().

BOOL_BITFIELD walk_stmt_info::val_only

Indicates whether the operand being examined may be replaced with something that matches is_gimple_val (if true) or something slightly more complicated (if false). "Something" technically means the common subset of is_gimple_lvalue and is_gimple_rhs, but we never try to form anything more complicated than that, so we don't bother checking.

Also note that CALLBACK should update this flag while walking the sub-expressions of a statement. For instance, when walking the statement 'foo (&var)', the flag VAL_ONLY will initially be set to true, however, when walking &var, the operand of that ADDR_EXPR does not need to be a GIMPLE value.

Referenced by get_local_debug_decl(), note_nonlocal_vla_type(), walk_gimple_asm(), and walk_gimple_seq_mod().

BOOL_BITFIELD walk_stmt_info::want_locations

True if we're interested in location information.


The documentation for this struct was generated from the following file: