As I noted in <http://gcc.gnu.org/ml/gcc-patches/2008-11/msg00105.html>:
excess precision is removed as part of evaluating an expression statement.
There are two minor problems associated with this:
* If in future GCC preserves such conversions when needed for floating-point
exceptions, the conversions (that are not part of the C99 semantics for
excess precision) will cause spurious exceptions.
* Statement expressions have no excess precision; it would be more natural
for them to have whatever excess precision their last contained expressions
have.
--
Summary: expression statements lose excess precision
Product: gcc
Version: 4.5.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: jsm28 at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39606