[RFC] Fix PR28684

Joseph S. Myers joseph@codesourcery.com
Tue Nov 14 20:27:00 GMT 2006


On Tue, 14 Nov 2006, Geert Bosch wrote:

> This is an entirely reasonable approach, as it gives the possibility
> of preventing reassociation in places where we care. For C99, there
> is the #pragma STDC CONTRACT OFF. Unfortunately, there is no
> infrastructure yet. We could either introduce flags per operation
> that indicate wether the operation may be contracted, or have a
> separate tree code that would indicate rounding to machine precision.
> (This would essentially be the Ada 'Machine attribute.)

LTO will need flags per operation or separate tree codes for various 
things that are currently handled by command-line options in order to 
handle optimizations between translation units that were compiled with 
different options.  (FP_CONTRACT doesn't currently have a command-line 
option, but FENV_ACCESS has -frounding-math and CX_LIMITED_RANGE has 
-fcx-limited-range.)  Likewise it will need various things controlled by 
langhooks to be explicit in the IR.  It isn't yet at the stage of 
implementing this sort of fine detail (rather at that of writing out and 
reading in much simpler code), but in due course solutions to these 
problems should be considered.

FP_CONTRACT may be on by default - but it refers to contraction within 
source language expressions only, and after gimplification we don't 
currently have that information; we may need some way to preserve it.  
Similarly the IR doesn't record the information needed for Fortran 
reassociation.

-- 
Joseph S. Myers
joseph@codesourcery.com



More information about the Gcc-patches mailing list