]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Fortran: reject BOZ type argument to SIZEOF().
authorHarald Anlauf <anlauf@gmx.de>
Sat, 18 Dec 2021 22:21:35 +0000 (23:21 +0100)
committerHarald Anlauf <anlauf@gmx.de>
Sat, 18 Dec 2021 22:21:35 +0000 (23:21 +0100)
gcc/fortran/ChangeLog:

PR fortran/103412
* check.c (gfc_check_sizeof): Reject BOZ type argument.

gcc/testsuite/ChangeLog:

PR fortran/103412
* gfortran.dg/illegal_boz_arg_2.f90: New test.

gcc/fortran/check.c
gcc/testsuite/gfortran.dg/illegal_boz_arg_2.f90 [new file with mode: 0644]

index 3934336df2e8251dffc65622fbd8b20d28fc2c73..625473c90d129646161d5f1bfdc431e80ef9a061 100644 (file)
@@ -5135,6 +5135,9 @@ gfc_check_sizeof (gfc_expr *arg)
       return false;
     }
 
+  if (illegal_boz_arg (arg))
+    return false;
+
   /* TYPE(*) is acceptable if and only if it uses an array descriptor.  */
   if (arg->ts.type == BT_ASSUMED
       && (arg->symtree->n.sym->as == NULL
diff --git a/gcc/testsuite/gfortran.dg/illegal_boz_arg_2.f90 b/gcc/testsuite/gfortran.dg/illegal_boz_arg_2.f90
new file mode 100644 (file)
index 0000000..3e5f6b6
--- /dev/null
@@ -0,0 +1,6 @@
+! { dg-do compile }
+! PR fortran/103412
+
+program p
+  integer, parameter :: a = sizeof(z'1') ! { dg-error "cannot be an actual" }
+end