> Le 7 oct. 2017 à 17:48, Steve Kargl <s...@troutmask.apl.washington.edu> a 
> écrit :
> 
> On Sat, Oct 07, 2017 at 12:37:03PM +0200, Dominique d'Humières wrote:
>> (4) Compiling
>> 
>> print *, INT(z'ffffffff',4)
>> end
>> 
>> gives
>> 
>> print *, INT(z'ffffffff',4)
>>             1
>> Error: Arithmetic overflow converting INTEGER(-1) to INTEGER(4)
>> at (1). This check can be disabled with the option '-fno-range-check’
>> 
>> Should not it be -1?
> 
> Maybe. :-)
> 
> See my note to Jerry about needing to implement F2015 16.3.3 correctly.
> Upon sleeping on this deficiency, I realized that 16.3.3 without stating
> allows one to set the sign-bit.  We find in 16.3.1 the statement

s/16/13/?

> 
>   The interpretation of a negative integer as a sequence of bits
>   is processor dependent.
> 
> There is the bit model and integer model numbers.  F2015 contrasts the
> models and concludes with 
> 
>   In particular, whereas the models are identical for r = 2 and
>   $w_{z-1}$ = 0, they do not correspond for r = 2 or $w_{z-1} = 1$
>   and the interpretation of bits in such objects is processor dependent.

I am not sure this is relevant. The problem here is not about bit 
interpretation, but how you fill 32 bits with a 32-bit pattern.

IMO 'INT(z'ffffffff',4)' should return an integer(4) with all its bits set to 
one.

(7) libgomp/testsuite/libgomp.fortran/aligned1.f03 should be changed as 
gcc/testsuite/gfortran.dg/graphite/id-26.f03:

--- ../_clean/libgomp/testsuite/libgomp.fortran/aligned1.f03    2017-09-28 
11:35:02.000000000 +0200
+++ libgomp/testsuite/libgomp.fortran/aligned1.f03      2017-10-09 
18:29:25.000000000 +0200
@@ -52,11 +52,11 @@
   ! Attempt to create 64-byte aligned allocatable
   do i = 1, 64
     allocate (c(1023 + i))
-    if (iand (loc (c(1)), 63) == 0) exit
+    if (iand (int(loc (c(1)), 8), 63_8) == 0) exit
     deallocate (c)
     allocate (b(i)%a(1023 + i))
     allocate (c(1023 + i))
-    if (iand (loc (c(1)), 63) == 0) exit
+    if (iand (int(loc (c(1)), 8), 63_8) == 0) exit
     deallocate (c)
   end do
   if (allocated (c)) then

otherwise it fails with -m64.

(8) In gfortran.dg/unf_io_convert_2.f90, why is

integer(1), parameter :: b1 = z'11’, …

valid, but not

integer(1) :: b1
b1 = z’11’

?

Dominique

> -- 
> Steve
> 20170425 https://www.youtube.com/watch?v=VWUpyCsUKR4
> 20161221 https://www.youtube.com/watch?v=IbCHE-hONow

Reply via email to