[Bug middle-end/45472] [4.5/4.6/4.7 Regression] [Middle-end volatile semantics] ICE: in move_op_ascend, at sel-sched.c:6124 with -fselective-scheduling2
jason at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Feb 16 19:52:00 GMT 2012
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45472
--- Comment #19 from Jason Merrill <jason at gcc dot gnu.org> 2012-02-16 19:41:29 UTC ---
It seems to me that volatile reads/writes should get their own gimple
statements, not be part of a larger block move. So instead of
vv1 = vv2;
we should have
vv1.a ={v} vv2.a;
vv1.b ={v} vv2.b;
I agree with Paolo's comment in #12 that we want to copy the non-volatile parts
as a block when possible. It seems like breaking a simple struct assignment
into these separate statements would be best done in the gimplifier so that
front ends don't need to get this right independently.
Out of curiousity, what is the use case for a non-volatile struct object with
volatile members?
More information about the Gcc-bugs
mailing list