diff options
author | Harald Anlauf <anlauf@gmx.de> | 2021-10-14 20:18:14 +0200 |
---|---|---|
committer | Harald Anlauf <anlauf@gmx.de> | 2021-10-14 20:18:14 +0200 |
commit | 1b115daf62d94337b3d0b2962b0bbbf005a450e0 (patch) | |
tree | 8010fbd211e85d944a268a4c98ef43b058b2b500 /gcc/fortran/check.c | |
parent | f0b7d4cc49ddb1c2c7474cc3f61e260aa93a96c0 (diff) | |
download | gcc-1b115daf62d94337b3d0b2962b0bbbf005a450e0.zip gcc-1b115daf62d94337b3d0b2962b0bbbf005a450e0.tar.gz gcc-1b115daf62d94337b3d0b2962b0bbbf005a450e0.tar.bz2 |
Fortran: fix order of checks for the SHAPE intrinsic
gcc/fortran/ChangeLog:
PR fortran/102716
* check.c (gfc_check_shape): Reorder checks so that invalid KIND
arguments can be detected.
gcc/testsuite/ChangeLog:
PR fortran/102716
* gfortran.dg/shape_10.f90: New test.
Diffstat (limited to 'gcc/fortran/check.c')
-rw-r--r-- | gcc/fortran/check.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c index 677209e..cfaf9d2 100644 --- a/gcc/fortran/check.c +++ b/gcc/fortran/check.c @@ -5086,6 +5086,13 @@ gfc_check_shape (gfc_expr *source, gfc_expr *kind) if (gfc_invalid_null_arg (source)) return false; + if (!kind_check (kind, 1, BT_INTEGER)) + return false; + if (kind && !gfc_notify_std (GFC_STD_F2003, "%qs intrinsic " + "with KIND argument at %L", + gfc_current_intrinsic, &kind->where)) + return false; + if (source->rank == 0 || source->expr_type != EXPR_VARIABLE) return true; @@ -5098,13 +5105,6 @@ gfc_check_shape (gfc_expr *source, gfc_expr *kind) return false; } - if (!kind_check (kind, 1, BT_INTEGER)) - return false; - if (kind && !gfc_notify_std (GFC_STD_F2003, "%qs intrinsic " - "with KIND argument at %L", - gfc_current_intrinsic, &kind->where)) - return false; - return true; } |