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