Hi, This is a patch to do some obvious cleanup and setting correct input_location in ipa_prop (because it invokes gimplification routines).
Bootstrapped and passed gcc regression tests. Is it okay for trunk? Thanks, Dehao gcc/ChangeLog: 2010-11-05 Dehao Chen <de...@google.com> * ipa-prop.c (ipa_modify_call_arguments): Set input_location so that gimplification routines can have right location. * emit-rtl.c (last_location): Remove unused variable.
Index: gcc/ipa-prop.c =================================================================== --- gcc/ipa-prop.c (revision 193174) +++ gcc/ipa-prop.c (working copy) @@ -2826,7 +2826,9 @@ ipa_modify_call_arguments (struct cgraph_edge *cs, gimple_stmt_iterator gsi; tree callee_decl; int i, len; + location_t saved_location = input_location; + input_location = gimple_location (stmt); len = VEC_length (ipa_parm_adjustment_t, adjustments); vargs = VEC_alloc (tree, heap, len); callee_decl = !cs ? gimple_call_fndecl (stmt) : cs->callee->symbol.decl; @@ -3004,6 +3006,7 @@ ipa_modify_call_arguments (struct cgraph_edge *cs, if (cs) cgraph_set_call_stmt (cs, new_stmt); update_ssa (TODO_update_ssa); + input_location = saved_location; free_dominance_info (CDI_DOMINATORS); } Index: gcc/emit-rtl.c =================================================================== --- gcc/emit-rtl.c (revision 193174) +++ gcc/emit-rtl.c (working copy) @@ -5937,7 +5937,7 @@ location_t epilogue_location; /* Hold current location information and last location information, so the datastructures are built lazily only when some instructions in given place are needed. */ -static location_t curr_location, last_location; +static location_t curr_location; /* Allocate insn location datastructure. */ void @@ -5945,7 +5945,6 @@ insn_locations_init (void) { prologue_location = epilogue_location = 0; curr_location = UNKNOWN_LOCATION; - last_location = UNKNOWN_LOCATION; } /* At the end of emit stage, clear current location. */