Fix libgomp Fortran tests

Brooks Moses bmoses@stanford.edu
Fri Sep 8 07:10:00 GMT 2006


Jerry DeLisle wrote:
> If gfortran were to support asymmetrical integers then the ABS intrinsic should 
> throw a runtime error on ABS(most_negative_value).  It does not follow common 
> sense or good reasoning to have an incorrect result and to do so knowingly.
> 
> To avoid the runtime penalty in computations of checking for that absurd case, I 
> think its better to just not allow it and stick with the standard which defines 
> symmetrical integers.

But, if you restrict the set of permitted integer values to a symmetric 
set, then by that same logic (and application of 7.1.7, "The execution 
of any numeric operation whose result is not defined by the arithmetic 
used by the processor is prohibited."), the subtraction operator should 
throw a runtime error on HUGE(I)-1.

Doing that would, of course, require an explicit runtime check on every 
addition and subtraction, and thus would incur a substantial runtime 
penalty.

As a result, restricting the set of integers to a symmetric set is not 
only an annoyance for users, it also _does not solve the problem_.  It 
merely shifts it to the addition operators rather than the ABS() intrinsic.

Luckily, neither 7.1.7 nor 13.14 (which has the corresponding 
restriction for intrinsic procedure calls) actually requires that these 
sorts of errors be diagnosed either at compile time or at runtime.

- Brooks



More information about the Fortran mailing list