[Bug middle-end/52314] New: gimplifier produces volatile
pinskia at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Feb 20 04:38:00 GMT 2012
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52314
Bug #: 52314
Summary: gimplifier produces volatile
Classification: Unclassified
Product: gcc
Version: 4.7.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: middle-end
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: pinskia@gcc.gnu.org
Noticed when improving tree-ssa-forwprop and other passes but is reproducible
on the trunk also.
Take:
volatile double bar;
int foo()
{
double baz = -__builtin_huge_val();
return baz <= -bar;
}
--- CUT ---
The gimple output is:
foo ()
{
int D.1591;
volatile double bar.0;
volatile double D.1593;
double baz;
baz = -Inf;
bar.0 = bar;
D.1593 = -bar.0;
D.1591 = D.1593 >= baz;
return D.1591;
}
--- CUT ---
The variables marked with volatile are wrongly marked as volatile. Even though
those two decls are not marked with volatile, their types are. When fold
happens, it sometimes wraps SAVE_EXPR around them because the whole volatile on
the type issue.
More information about the Gcc-bugs
mailing list