This is the mail archive of the
mailing list for the GCC project.
RE: A problem about loop store motion
- From: "Jiangning Liu" <jiangning dot liu at arm dot com>
- To: "'Richard Guenther'" <richard dot guenther at gmail dot com>
- Cc: <gcc at gcc dot gnu dot org>
- Date: Tue, 21 Feb 2012 16:54:13 +0800
- Subject: RE: A problem about loop store motion
- References: <4f42088a.ca3c440a.171b.35f7SMTPIN_ADDED@mx.google.com> <CAFiYyc3+DpkPoT2U2H9nZsfiSJ5T5voumSbi-vGW9QySS2QmMA@mail.gmail.com>
> The MEM form is more "canonical", so the loop SM machinery to detect
> equality should be adjusted accordingly. Alternatively you can teach
> PRE insertion to strip off the MEM if possible (though
> fold_stmt_inplace should
> arelady do this if possible).
Thank you! You are right. I noticed on latest trunk the problem in PRE was
already fixed by invoking fold_stmt_inplace.
Unfortunately for this small case, the latest trunk code still can't do SM
for variable pos, because refs_may_alias_p(*D.4074_10, pos) is true, that
is, pos has alias with l[pos].
I think alias analysis should be able to know they don't have alias with
each other, unless there is an assignment statement like "l=&pos;".
Can alias analysis fix the problem?