This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-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 20:04:27 -0000
- Subject: [Bug tree-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 20:04 -------
I wonder if this has something to do with the dereference done through
int * const &.
This is the read from r->v._M_impl._M_finish in the loop.
D.16053 = &r.52D.16052->vD.11757;
{
struct vector<int,std::allocator<int> >D.11215 * const thisD.16479;
thisD.16479 = D.16053;
{
struct vector<int,std::allocator<int> >D.11215 * const
thisD.16488;
thisD.16488 = thisD.16479;
{
intD.2 * * D.16491;
D.16491 =
&thisD.16488->D.11755._M_implD.11232._M_finishD.11380;
{
intD.2 * const & __iD.16492;
__iD.16492 = D.16491;
{
intD.2 * const D.16494;
D.16494 = *__iD.16492;
And is changed within the same loop:
struct vector<int,std::allocator<int> >D.11215 * D.16053;
D.16053 = &r.52D.16052->vD.11757;
struct vector<int,std::allocator<int> >D.11215 * const thisD.16430;
thisD.16430 = D.16053;
{
intD.2 * D.16432;
intD.2 * D.16433;
D.16432 = thisD.16430->D.11755._M_implD.11232._M_finishD.11380;
D.16433 = D.16432 - 4B;
thisD.16430->D.11755._M_implD.11232._M_finishD.11380 = D.16433;
D.16432 = thisD.16430->D.11755._M_implD.11232._M_finishD.11380;
But the pointer is really const only in the block that it defines, not in the
whole function.
--
What |Removed |Added
----------------------------------------------------------------------------
CC| |jakub at redhat dot com
AssignedTo|jakub at gcc dot gnu dot org|unassigned at gcc dot gnu
| |dot org
Status|ASSIGNED |NEW
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19786