Traversing gimple?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi, I'd like to traverse gimple statements and all operands therein
like VAR_DECLs.

For each basic_block, I am calling

walk_gimple_seq (bb_seq (bb), NULL, func_op, &wi);

but some part of the code is not traversed.  It's in a pass that
runs after all tree optimizations where -fdump-tree-optimized
reads:


;; Function foo2 (foo2)

foo2 (int x)
{
  static struct ptrs p = {.p1=&a, .p2=&b, .p3=&c};
  struct ptrs * iftmp.0;

<bb 2>:
  if (x_2(D) != 0)
    goto <bb 3>;
  else
    goto <bb 4>;

<bb 3>:

<bb 4>:
  # iftmp.0_1 = PHI <&p(3), 0B(2)>
  bar (iftmp.0_1); [tail call]
  return;

}


The callback is called for:

* gimple_cond in BB2 (operands x and 0).
* gimple_call (operands iftmp)
* gimple_return (no operands)

What I am after is p and its constructor, but the
setting of iftmp is skipped and hence p is never
traversed.

What does the trick so that I get all operands?

Is this only die to PHI nodes? Or are there other
nodes that might hide the operands when traversing?

Thanks,

Johann




[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux