This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]