This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/52558] write introduction incorrect wrt the C++11 memory model
- From: "aldyh at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 10 Apr 2012 17:07:22 +0000
- Subject: [Bug tree-optimization/52558] write introduction incorrect wrt the C++11 memory model
- Auto-submitted: auto-generated
- References: <bug-52558-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52558
--- Comment #14 from Aldy Hernandez <aldyh at gcc dot gnu.org> 2012-04-10 17:07:22 UTC ---
Richard G., or perhaps another aliasing expert. I am working on a patch for
this problem. Could you pontificate as to why no optimization pass has been
able to figure out that g_2_lsm.6_12 == g_2 below?
# VUSE <.MEM_9(D)>
g_2_lsm.6_12 = g_2; <-- g_2_lsm set to g_2
if (pretmp.4_1 != 0)
goto <bb 3>;
else
goto <bb 5>;
<bb 3>:
# VUSE <.MEM_9(D)>
D.1883_17 = g_2;
if (g_2_lsm.6_12 != D.1883_17) <-- g_2_lsm compared with g_2
goto <bb 4>;
Why can't anyone figure out that g_2_lsm is g_2? Am I building the conditions
and stores incorrectly, is there a missing annotation, or is something else
amok here?
Thanks.