This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] PR 62173, re-shuffle insns for RTL loop invariant hoisting


On Fri, Dec 19, 2014 at 6:09 AM, Segher Boessenkool
<segher@kernel.crashing.org> wrote:
> On Thu, Dec 18, 2014 at 05:00:01PM +0000, Jiong Wang wrote:
>> On 17/12/14 15:54, Richard Biener wrote:
>> >ick.  I realize we don't have SSA form on RTL but doesn't DF provide
>> >at least some help in looking up definition statements for pseudos?
>> >In fact we want to restrict the transform to single-use pseudos, thus
>> >hopefully it can at least tell us that... (maybe not and this is what
>> >LOG_LINKS are for in combine...?)  At least loop-invariant alreadly
>> >computes df_chain with DF_UD_CHAIN which seems exactly what
>> >is needed (apart from maybe getting at single-use info).
>>
>> thanks very much for these inspiring questions.
>>
>> yes, we want to restrict the transformation on single-use pseudo only,
>> and it's better the transformation could re-use existed info and helper
>> function to avoid increase compile time. but I haven't found anything I
>> can reuse at the stage the transformation happen.
>>
>> the info similar as LOG_LINKS is what I want, but maybe simpler. I'd study
>> the code about build LOG_LINKS, and try to see if we can do some factor out.
>
> LOG_LINKs in combine are just historical.  combine should be converted
> to use DF fully.
>
> LOG_LINKs have nothing to do with single use; they point from the _first_
> use to its corresponding def.
>
> You might want to look at what fwprop does instead.
Pass rtl fwprop uses df information in single-definition way, it
doesn't really take into consideration if register is a single use.
This often corrupts other optimizations like post-increment and
load/store pair.  For example:

  add r2, r1, r0
  ldr rx, [r2]
  add r2, r2, #4
is transformed into below form:
  add r2, r1, r0
  ldr rx, [r1, r0]
  add r2, r2, #4

As a result, post-increment opportunity is corrupted, also definition
of r2 can't be deleted because it's not single use.

Thanks,
bin


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]