This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Manipulating the tree Structure


On 3/12/07, Andrea Callia D'Iddio <andrea.calliadiddio@gmail.com> wrote:
Great! thank you! I tested with your code and it works... but I'm
still a bit confused.
Could you help me with this simple example?
Suppose that I obtained a tree structure with the following command:

tree stmt = bsi_stmt (si);

and suppose I want to execute the following task:

For each tree statement t:
  IF t is an assignment, then output variable name

In 4.3 (earlier replace GIMPLE_MODIFY_STMT with MODIFY_EXPR)


if (TREE_CODE (t) == GIMPLE_MODIFY_STMT)
{
tree lhs = TREE_OPERAND (t, 0);
tree rhs = TREE_OPERAND (t, 1);

 print_generic_expr (stderr, lhs, 0);
 print_generic_expr (stderr, rhs, 0);
}
ELSE IF t is an IF statement then output the IF condition
else if TREE_CODE (t) == COND_EXPR)
{
tree condition = COND_EXPR_COND (t);
print_generic_expr (stderr, condition, 0);
}

ELSE ...

how can I do this task?

Really, this isn't that hard
Can you give me some reference?

Look at any existing tree-ssa-*.c pass


They all do this in a myriad of ways.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]