[Cfp-interest 2598] Re: draft CFP response for NB comments and N3071

Joseph Myers joseph at codesourcery.com
Fri Jan 6 18:03:00 PST 2023


On Fri, 6 Jan 2023, Jim Thomas wrote:

> > GB-164: I'll disagree with the disagreement here (I assume this will end 
> > up needing to be discussed in the WG14 meeting), since the semantic change 
> > in C2x (which I don't think was ever explicitly discussed as an intended 
> > semantic change in a paper) would make errno-setting implementations of 
> > various functions much more complicated and less efficient - detecting 
> > overflow after the fact (in a way that's valid for previous versions of C) 
> > by checking for an infinite results from finite arguments is very 
> > straightforward, determining based on the arguments whether pow, fdim, 
> > hypot or fma (for example) would overflow / whether a result of the 
> > largest finite value is an overflow is much more complicated and 
> > inefficient (and saving and restoring exceptions so as to test, for the 
> > purposes of errno setting, whether the overflow exception was raised, is 
> > also inefficient; such explicit manipulations of floating-point state are 
> > liable to empty the processor pipeline).  (This concern is specifically 
> > about errno setting rather than exceptions; ensuring the overflow 
> > exception is raised for overflow to a finite number isn't a problem in the 
> > same way.  
> 
> Could you determine overflow errno setting from the overflow 
> floating-point exception?

See above.  If a function has to save and restore floating-point state 
explicitly, it's liable to be bad for pipelined execution (so efficiency).  
(And the "save and restore" part is necessary, since the overflow flag 
might already be raised on entry to the function.)

> > GB-279: The wording of some of the changes isn't quite right (constexpr 
> > isn't a storage *duration*, so wording shouldn't refer to it as such in 
> > F.8.4 or F.8.5).
> 
> Rewordings might be:
> 
> In F.8.4 #1 change “for an object that has static or thread storage 
> duration” to “for an object declared with storage-class specifier 
> constexpr, static, or thread_local”.

That's not correct.  An object with static storage duration might have no 
storage-class specifier, or only the extern specifier, if at file scope.

> In F.8.5 #1 change “of objects that have static or thread storage 
> duration” to “of objects declared with storage-class specifier 
> constexpr, static, or thread_local”.

Likewise.

-- 
Joseph S. Myers
joseph at codesourcery.com


More information about the Cfp-interest mailing list