This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/62030] wrong code due to ifcvt merging two stores which have different aliasing sets
- From: "pinskia at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 06 Aug 2014 05:29:40 +0000
- Subject: [Bug rtl-optimization/62030] wrong code due to ifcvt merging two stores which have different aliasing sets
- Auto-submitted: auto-generated
- References: <bug-62030-4 at http dot gcc dot gnu dot org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62030
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Here are the two stores:
(insn 30 25 33 3 (set (mem/f:DI (reg/v/f:DI 200 [ prev ]) [5 MEM[(struct head
*)&heads][_8].first+0 S8 A64])
(reg/v/f:DI 199 [ next ])) t.c:22 302 {*movdi_64bit}
(expr_list:REG_DEAD (reg/v/f:DI 200 [ prev ])
(expr_list:REG_DEAD (reg/v/f:DI 199 [ next ])
(nil))))
(insn 35 34 36 4 (set (mem/f:DI (reg/v/f:DI 200 [ prev ]) [3 prev_11->next+0 S8
A64])
(reg/v/f:DI 199 [ next ])) t.c:24 302 {*movdi_64bit}
(expr_list:REG_DEAD (reg/v/f:DI 200 [ prev ])
(expr_list:REG_DEAD (reg/v/f:DI 199 [ next ])
(nil))))
Note the reason why I think this does not happen for x86 (or even aarch64) is
due to the constraints on mem operands on MIPS.