This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/26587] [4.1 Regression] strict aliasing incorrectly pre-loads an array element with loops
- From: "rguenth at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 7 Mar 2006 10:39:01 -0000
- Subject: [Bug tree-optimization/26587] [4.1 Regression] strict aliasing incorrectly pre-loads an array element with loops
- References: <bug-26587-12319@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #6 from rguenth at gcc dot gnu dot org 2006-03-07 10:39 -------
With -fno-ivopts -fno-tree-vrp tree-optimizers produce the same for both 4.1.0
and 4.2.0 until tree loop-invariant-motion, which does the wrong transformation
because of bogus alias information:
<L11>:;
# TMT.6_23 = PHI <TMT.6_24(3), TMT.6_25(5)>;
# ptr_3 = PHI <&BF_current.P[0](3), ptr_9(5)>;
# L_2 = PHI <0(3), L_14(5)>;
<L7>:;
ptr_9 = ptr_3 + 8B;
# VUSE <BF_current_21>;
D.1297_10 = BF_current.P[0];
L_11 = L_2 ^ D.1297_10;
tmp4_12 = L_11 >> 24;
# VUSE <BF_current_21>;
D.1298_13 = BF_current.P[17];
L_14 = tmp4_12 ^ D.1298_13;
D.1299_15 = ptr_9 - 8B;
# TMT.6_25 = V_MAY_DEF <TMT.6_23>;
*D.1299_15 = L_14;
if (ptr_9 < &BF_current.P[18]) goto <L12>; else goto <L4>;
the store to *D.1299_15 kills BF_current_21, which we don't notice.
--
rguenth at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |dberlin at gcc dot gnu dot
| |org
Component|rtl-optimization |tree-optimization
Keywords| |alias
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26587