This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/33680] [4.3 Regression] ICE when compilling elbg.c from ffmpeg (vectorizer)
- 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: 11 Oct 2007 09:41:55 -0000
- Subject: [Bug tree-optimization/33680] [4.3 Regression] ICE when compilling elbg.c from ffmpeg (vectorizer)
- References: <bug-33680-10490@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #12 from jakub at gcc dot gnu dot org 2007-10-11 09:41 -------
The problem is that D.1556 (the var that hasn't been renamed or with the patch
can't be looked up) has been deleted.
*.phiprop has:
long unsigned intD.4 D.1556;
...
D.1554_11 = (long unsigned intD.4) dimD.1539_4(D);
D.1556_12 = D.1554_11 * 4;
...
D.1561_23 = D.1556_12 /[ex] 4;
D.1562_24 = &(*newcentroid.1D.1559_22)[0]{lb: 0 sz: D.1561_23 * 4};
then FRE does:
Replaced D.1556_12 /[ex] 4 with D.1554_11 in D.1561_23 = D.1556_12 /[ex] 4;
long unsigned intD.4 D.1556;
...
D.1554_11 = (long unsigned intD.4) dimD.1539_4(D);
D.1556_12 = D.1554_11 * 4;
...
newcentroid.1D.1559_22 = (intD.0[3][0:D.1553] *) D.1560_21;
D.1561_23 = D.1554_11;
D.1562_24 = &(*newcentroid.1D.1559_22)[0]{lb: 0 sz: D.1561_23 * 4};
and as D.1556 is unused, it is DCEd in dce2 pass. But D.1556 (and D.1555) is
still present in TYPE_SIZE{,_UNIT} of the VLA type, so when vectorizer
regimplifies it, it adds back code to compute its size, but that assumes
D.1556 has the correct value.
Not sure what could be done here to fix this. The easiest solution is not to
vectorize when VLA types are involved. In any case it means that debuginfo
will
be incomplete if its size variable has been DCEd.
--
jakub at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |dnovillo at gcc dot gnu dot
| |org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33680