As part of adding a new pass to GCC I am intercepting addition to and
subtraction from pointers.  These are represented by PLUS_EXPR and
MINUS_EXPR tree nodes.  I need to be able to find out which of the node's
two operands is the actual pointer and which is the integer that has been
added to it.

Subtraction is not a problem.  The real pointer always seems to be the first
operand (makes sense).

If the integer is a constant (e.g. p = p + 4) I can catch it by checking the
type: 
  TREE_CODE (TREE_OPERAND (t, 0)) == INTEGER_CST

But in other cases (e.g. p = p + i) I can't do this by looking at the type
as they both have the same type as the result pointer.  

Is there another way to find out which is which?

Thanks.
Alex

Reply via email to