Fix libgomp Fortran tests

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


Jakub Jelinek wrote:
> On Thu, Sep 07, 2006 at 04:53:54PM -0700, Steve Kargl wrote:
>>The attached patch fixes 2 problems in the libgomp testsuite.
>>The Fortran tried to use the most negative integer value, but
>>this cause an overflow because gfortran creates this value 
>>via a unary minus operation.
> 
>>--- libgomp/testsuite/libgomp.fortran/reduction4.f90	(revision 116723)
>>+++ libgomp/testsuite/libgomp.fortran/reduction4.f90	(working copy)
>>@@ -12,7 +12,7 @@
>>   ka = Z'05a5a5'
>>   v = .false.
>>   cnt = -1
>>-  x = Z'ffffffff'
>>+  x = - huge(x) - 1
> 
> This can't be right.  The test really needs an integer with all bits set,
> -huge(x) - 1 is Z'80000000'.  That's what the OpenMP standard mandates
> that iand reduction var should be initialized to.

Indeed.  This should be x=-1.  Or, possibly more clearly, x=not(0).

(The BOZ-literal here is indeed wrong, but for a different reason; I 
believe the official gfortran understanding is that such literals are 
taken to be a _positive_ integer of the highest available precision, and 
then type-cast upon assignment just like any other expression, so 
nominally this is equivalent to x = 4294967295 and as such is illegal 
due to integer overflow.)

- Brooks



More information about the Fortran mailing list