move_computations. The patch is doing something in the
>>>>>>> following 3 calls inside of this method.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> 3.1 (more details below) walker.walk – move computat
kind of uses are that? By definition all stmts executed
>>>>> under condition A that are used in code not under condition A have
>>>>> a PHI node associated. This is why the existing conditional movement
>>>>> handling moves PHI nodes (and all de
>>>>If you move the PHI node for x then you don't need to insert any other
>>>> PHI nodes (and you _do_ have to move the PHI node anyway).
>>>
>>>>
>>>>> 3.2 (more details below) create_phi_nodes – create phi nodes for
>>>&
gt; That is, if you move a conditionally executed statement but not
>>> any PHI node it feeds then the movement is useless.
>>>
>>> But maybe I am missing something about the PHI business.
>>>
>> Ok. I have different understanding on this (and am afraid of
some bb
>>> which dominates preheader), then we add such name to fl_names_map.
>>>
>>> 3.2 Create_phi_nodes
>>>
>>> For each of the loops we go over ((phi_data*) loop->aux)->stmts. These
>>> are statements which were moved, but they have
se move_phis executed before move_computations, that just moves
> invariant PHI nodes (which this all is about - see above) and their
> controlling conditions and only then move their dependencies.
I didn;t understand so far (I think let's clarify previous questions,especially
about p
as ok to me to
>> implement it such way, maybe I’m not correct. ):
>>
>> a) Loop1
>>
>> {
>>
>> If (a)
>>
>> Loop2
>>
>> {
>>
>>Stmt - Inv
>
> a) gcc/testsuite/gcc.dg/tree-ssa/loop-7.c,
> gcc/testsuite/gcc.dg/tree-ssa/recip-3.c – changed tests:
>
> - gcc/testsuite/gcc.dg/tree-ssa/loop-7.c changed as
> predicated lim moves 2 more statements out of the loop;
>
> - gcc/testsuite/gcc.dg/tree-ssa/r
;>>
>>>> Loop1
>>>>
>>>> {
>>>>
>>>> …
>>>>
>>>> If (cond1)
>>>>
>>>> If (cond2)
>>>>
>>>> If (cond3)
>>&
;>}
>>>
>>> Stmt will be moved out only if cond1 is always executed in Loop1.
>>>
>>> c) It took me a long time to write all of these code, so there
>>> might be other peculiarities which I forgot to mention. :)
>>>
>>>
It took me a long time to write all of these code, so there
>> might be other peculiarities which I forgot to mention. :)
>>
>>Let’s discuss these ones as you will review my patch.
>>
>> 3) Patch consists of 9 files:
>>
>> a)
as you will review my patch.
>
> 3) Patch consists of 9 files:
>
> a) gcc/testsuite/gcc.dg/tree-ssa/loop-7.c,
> gcc/testsuite/gcc.dg/tree-ssa/recip-3.c – changed tests:
>
> - gcc/testsuite/gcc.dg/tree-ssa/loop-7.c changed as
> predicated lim moves 2 more statements out
[subj corrected]
Hi, Andy
Thanks for your clarification. Then I'll try to implement some chain
of debug statements to make the value computed in the branch available
inside the loop.
Or may be you have better ideas?
Waiting for further comments regarding the whole patch from you,
Richard and ot
Evgeniya Maenkova writes:
>
> So, in my opinion it’s ok to generate additional phi node for debug
> case. But I’m not a compiler expert and maybe there is some
> requirement that debug and non-debug versions should differ only by
> debug statements, I don’t know.
gcc has such a requirement.
Othe
– with conditional
lim recip optimization in this test doesn’t work (the corresponding
value is below threshold as I could see in the code for recip, 1<3).
So to have recip working in this test I changed test a little bit.
b) gcc/tree-ssa-loop-im.c – the patched lim per se
c)
15 matches
Mail list logo