Hello, I have written a GIMPLE pass to do memory profiling. Basically for every GIMPLE_MODIFY_STMT, I'm including a printf statement to print the reference of DEF and USE variables of the statement. I'm using GCC 4.3.4 For e.g., if the statement in gimple is D.2761 = D.2616 + 1; I insert printf call in GIMPLE tree just below the above statement: printf("DEF %p, USE %p\n",&D.2761, &D.2616); The above code works perfectly and prints all the memory references when the optimization flag is turned off. But when I execute with -O , I get an error at expand_expr_addr_expr_1 function...in expr.c file. Could anyone help as to what is happening....Ideally I want to run my pass on SSA and SSA is built only upon -O flag. Where should I be inserting my pass in passes.c. Thanks, Srinivas