> -----Original Message----- > From: Richard Biener [mailto:richard.guent...@gmail.com] > Sent: Wednesday, October 30, 2013 10:46 PM > To: Bin Cheng > Cc: GCC Patches > Subject: Re: [PATCH GCC]Simplify address expression in IVOPT > > On Tue, Oct 29, 2013 at 10:18 AM, bin.cheng <bin.ch...@arm.com> wrote: > > Hmm. I think you want what get_inner_reference_aff does, using the return > value of get_inner_reference as starting point for determine_base_object. > And you don't want to restrict yourselves so much on what exprs to process, > but only exclude DECL_Ps. Did you mean I should pass all address expressions to get_inner_reference_aff except the one with declaration operand? I am a little confused here why DECL_Ps should be handled specially? Seems it can be handled properly by the get_* function. Anything important I missed?
> Just amend get_inner_reference_aff to return the tree base object. I found it's inappropriate to do this because: functions like get_inner_reference* only accept reference expressions, while base_object has to be computed for other kinds of expressions too. Take gimple statement "a_1 = *ptr_1" as an example, the base passed to alloc_iv is ptr_1; the base_object computed by determine_base_object is also ptr_1, which we can't rely on get_inner_reference* . Also It seems the comment before determine_base_object might be inaccurate: " Returns a memory object to that EXPR points." which I think is " Returns a pointer pointing to the main memory object to that EXPR points." Right? > > Note that this isn't really "simplifying" but rather lowering all addresses. > > The other changes in this patch are unrelated, right? Right, I should have named this message like "refine cost computation of expressions in IVOPT" just as the patch file. Thanks. bin