On Mon, Nov 26, 2012 at 8:10 AM, Richard Biener <richard.guent...@gmail.com> wrote: > On Mon, Nov 26, 2012 at 4:54 PM, Dehao Chen <de...@google.com> wrote: >> On Mon, Nov 26, 2012 at 7:28 AM, Richard Biener >> <richard.guent...@gmail.com> wrote: >>> On Thu, Nov 8, 2012 at 6:39 PM, Dehao Chen <de...@google.com> wrote: >>>> ping... >>> >>> The emit-rtl.c hunk is ok. I'm questioning the ipa-prop.c hunk though - >>> what >>> looks at input_location (nothing outside of the frontend should, really). >> >> ipa_modify_call_arguments invokes force_gimple_operand_gsi, which uses >> frontend routines to gimplify expr and uses input_location. > > Can you be more specific? That's the place that needs fixing - there are a > lot > more force_gimple_operand callers.
You are right, the patch is updated as follows: Index: gcc/ipa-prop.c =================================================================== --- gcc/ipa-prop.c (revision 193203) +++ gcc/ipa-prop.c (working copy) @@ -2870,7 +2870,8 @@ ipa_modify_call_arguments (struct cgraph_edge *cs, gcc_checking_assert (adj->offset % BITS_PER_UNIT == 0); base = gimple_call_arg (stmt, adj->base_index); - loc = EXPR_LOCATION (base); + loc = DECL_P (base) ? DECL_SOURCE_LOCATION (base) : + EXPR_LOCATION (base); if (TREE_CODE (base) != ADDR_EXPR && POINTER_TYPE_P (TREE_TYPE (base))) Thanks, Dehao > > Richard. > >> Thanks, >> Dehao >> >>> >>> Thanks, >>> Richard. >>> >>>> >>>> On Mon, Nov 5, 2012 at 5:20 PM, Dehao Chen <de...@google.com> wrote: >>>>> >>>>> 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.