[Patch, Fortran] PR34342 - BOZ diagnostic, Fortran 2003 BOZ, BOZ extensions

Jerry DeLisle jvdelisle@verizon.net
Sat Dec 8 18:30:00 GMT 2007


Jerry DeLisle wrote:
> Tobias Burnus wrote:
>> :ADDPATCH fortran:
>>
>> This patch adds:
>>
>> a) Fortran 2003 BOZ, i.e. real(boz), dble(boz),
>> cmplx(boz,y)/cmplx(x,boz) are treated as if the BOZ had been TRANSFERed.
>>
>> b) Using BOZ in DATA statements to initialize non-integer variables
>> gives now an error with -std=f95/f2003
>>
>> c) Using BOZ in DATA statement for non-integer variables, now TRANSFERs
>> the bit pattern and does not convert the integer value to be compatible
>> with several other compilers. (Only for REAL and COMPLEX variables.)
>>
>> d) Using  "real r = boz" now also TRANSFERs the bit pattern as long as
>> there is no expression on the right-hand side; i.e. in "real r = boz +
>> 1" the boz is regarded as integer. (For expressions with BOZ, different
>> compilers behave quite differently.)
>>
>> e) Improve the BOZ documentation by (1) telling more about BOZ and (2)
>> by making clear how gfortran extends the standard syntax.
>>
>> If anyone has an idea how to reject with -f2003 BOZ of the following
>> type I'd be happy:
>>    r = z'1234' + 1.0
>>
>> Build and regression tested on x86-64-linux.
>> OK for the trunk?
>>
> 
> Change:
> 
> +Furthermore, GNU Fortran allows to use BOZ literal constants outside
> 
> s/to use/using/
> 
> Change:
> 
> +constant is converted to an @code{INTEGER} value with the kind type with
> +the largest decimal representation, and this value is then converted
> +numerically to the type and kind of the variable in question.
> 
> To:
> 
> +constant is converted to an @code{INTEGER} value with
> +the largest decimal representation.  This value is then converted
> +numerically to the type and kind of the variable in question.
> 
> I am going to test on ppc
> 
> standby (see below)
> 

Regression tested on ppc, (powerpc64-unknown-linux-gnu)

FAIL: gfortran.dg/bind_c_usage_16.f03 execution test
FAIL: gfortran.dg/bind_c_usage_16.f03 execution test
FAIL: gfortran.dg/bind_c_usage_16.f03 execution test
FAIL: gfortran.dg/bind_c_usage_16.f03 execution test
FAIL: gfortran.dg/bind_c_usage_16.f03 execution test
FAIL: gfortran.dg/bind_c_usage_16.f03 execution test
FAIL: gfortran.dg/bind_c_usage_16.f03 execution test
FAIL: gfortran.dg/bind_c_usage_16.f03 execution test
FAIL: gfortran.dg/ltrans-7.f90 scan-tree-dump-times ltrans "transformed loop" 1
XPASS: gfortran.dg/nint_2.f90 execution test
XPASS: gfortran.dg/nint_2.f90 execution test
XPASS: gfortran.dg/nint_2.f90 execution test
XPASS: gfortran.dg/nint_2.f90 execution test
XPASS: gfortran.dg/nint_2.f90 execution test
XPASS: gfortran.dg/nint_2.f90 execution test
XPASS: gfortran.dg/nint_2.f90 execution test


The failures are unrelated and seen before. I do wonder if we have a PR for the 
bind_c problem.

Your patch is OK to commit.

Jerry



More information about the Fortran mailing list