Hello, My aim is to iterate over gimple call stmt parameters and check whether it is constant or constant expression and mark/store them for some gimple transformation.
I have an intrinsic function call of the following - __builtin_xyz(void*, 7, addr + 10); I want to find its parameters which are either constant or constant expression i.e. 7 and addr + 10 from above case. [1] I tried below macro but there is very less usage in the entire source code - tree fn_ptr = gimple_call_fn (dyn_cast<gcall *> (stmt)); //stmt = gimple_call function_args_iterator iter; tree argtype; if (TREE_CODE (fn_ptr) == ADDR_EXPR) { FOREACH_FUNCTION_ARGS (fn_ptr, argtype, iter) { if (TREE_CONSTANT (argtype)) // Found a constant expression parameter } } The problem is I am getting only one parameter tree but there are 2 constants in the above function call. Even if "addr + 10" is treated differently, I want to mark it for the transformation. a. Is the above correct method to iterate over function call parameters? b. Is there a different way to achieve the above goal? Thanks and Regards, Shubham