This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/19786] [4.0 Regression] Aliasing optimisation bug
- From: "jakub at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 16 Feb 2005 16:58:56 -0000
- Subject: [Bug rtl-optimization/19786] [4.0 Regression] Aliasing optimisation bug
- References: <20050206101741.19786.sylvain.pion@sophia.inria.fr>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Additional Comments From jakub at gcc dot gnu dot org 2005-02-16 16:58 -------
Actually, I do see problems in the tree dumps already.
Particularly the trees look ok before LIM and are broken afterwards.
loopinit->lim pseudo diff:
<L97>:;
D.16409_250 = &this_125->D.11755._M_impl._M_start;
__i_251 = D.16409_250;
D.16417_252 = *__i_251;
*D.16417_252 = 1;
this_109 = this_125;
D.16452_108 = this_109->D.11755._M_impl._M_finish;
SR.568_107 = D.16452_108;
D.16460_97 = this_109->D.11755._M_impl._M_start;
SR.571_93 = D.16460_97;
if (SR.571_93 == SR.568_107) goto <L142>; else goto <L143>;
<L143>:;
-<L110>:;
D.16491_352 = &this_125->D.11755._M_impl._M_finish;
__i_353 = D.16491_352;
SR.574_354 = *__i_353;
D.16499_365 = SR.574_354 - 4B;
D.16061_377 = *D.16499_365;
+<L110>:;
if (D.16061_377 != 0) goto <L144>; else goto <L117>;
<L144>:;
goto <bb 27> (<L136>);
<L117>:;
D.16432_339 = this_125->D.11755._M_impl._M_finish;
D.16433_340 = D.16432_339 - 4B;
this_125->D.11755._M_impl._M_finish = D.16433_340;
this_599 = this_125;
D.16452_598 = this_599->D.11755._M_impl._M_finish;
SR.568_596 = D.16452_598;
D.16460_588 = this_599->D.11755._M_impl._M_start;
SR.571_587 = D.16460_588;
if (SR.571_587 == SR.568_596) goto <L145>; else goto <L146>;
<L146>:;
goto <bb 20> (<L110>);
<L145>:;
goto <bb 27> (<L136>);
...
<L142>:;
<L136>:;
return <retval>;
*(*&this->D.11755._M_impl._M_finish - 4B) is hoisted before the loop as
invariant, although it is not (each iteration of the loop decreases
this->D.11755._M_impl._M_finish by 4 bytes).
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19786