Hi Steve On 23/12/18 6:49 PM, Steve Kargl wrote: > This is a re-submission of a patch I submitted 15 months ago. > See https://gcc.gnu.org/ml/fortran/2017-09/msg00124.html > > At that time one reviewer OK'd the patch for committing, > and one reviewer raised objections to the patch as I > chose to remove dubious extensions to the Fortran standard. > I withdrew that patch with the expection that Someone > would fix the bug. Well, Someone has not materialized. > > The patch has been retested on i586-*-freebsd and x86_64-*-freebsd. > > OK to commit as-is? > > Here's the text from the above URL. > > In short, F2008 now allows boz-literal-constants in IAND, IOR, IEOR, > DSHIFTL, DSHIFTR, and MERGE_BITS. gfortran currently allows a BOZ > argument, but she was not enforcing restrictions in F2008. The > attach patch causes gfortran to conform to F2008. > > As a side effect, the patch removes a questionable GNU Fortran > extension that allowed arguments to IAND, IOR, and IEOR to have > different kind type parameters. The behavior of this extension > was not documented. > > 2017-09-27 Steven G. Kargl <ka...@gcc.gnu.org> > > PR fortran/45513 > PR fortran/81509 > * check.c: Rename function gfc_check_iand to gfc_check_iand_ieor_ior. > * check.c (boz_args_check): New function. Check I and J not both BOZ. > (gfc_check_dshift,gfc_check_iand_ieor_ior, gfc_check_ishft, > gfc_check_and, gfc_check_merge_bits): Use it. > * check.c (gfc_check_iand_ieor_ior): Force conversion of BOZ to kind > type of other agrument. Remove silly GNU extension. > (gfc_check_ieor, gfc_check_ior): Delete now unused functions. > * intrinsic.c (add_functions): Use gfc_check_iand_ieor_ior. Wrap long > line. > * intrinsic.h: Rename gfc_check_iand to gfc_check_iand_ieor_ior. > Delete prototype for bool gfc_check_ieor and gfc_check_ior > * intrinsic.texi: Update documentation for boz-literal-constant. > > 2017-09-27 Steven G. Kargl <ka...@gcc.gnu.org> > > PR fortran/45513 > PR fortran/81509 > * gfortran.dg/graphite/id-26.f03: Fix non-conforming use of IAND. > * gfortran.dg/pr81509_1.f90: New test. > * gfortran.dg/pr81509_2.f90: New test. > This patch has caused the following failures on aarch64-none-linux-gnu:
FAIL: libgomp.fortran/aligned1.f03 -O0 (test for excess errors) FAIL: libgomp.fortran/aligned1.f03 -O1 (test for excess errors) FAIL: libgomp.fortran/aligned1.f03 -O2 (test for excess errors) FAIL: libgomp.fortran/aligned1.f03 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions (test for excess errors) FAIL: libgomp.fortran/aligned1.f03 -O3 -g (test for excess errors) FAIL: libgomp.fortran/aligned1.f03 -Os (test for excess errors) With the failure as: Excess errors: /build/src/gcc/libgomp/testsuite/libgomp.fortran/aligned1.f03:55:14: Error: Arguments of 'iand' have different kind type parameters at (1) /build/src/gcc/libgomp/testsuite/libgomp.fortran/aligned1.f03:59:14: Error: Arguments of 'iand' have different kind type parameters at (1) Thanks Sudi