diff options
author | Harald Anlauf <anlauf@gmx.de> | 2024-03-22 18:17:15 +0100 |
---|---|---|
committer | Harald Anlauf <anlauf@gmx.de> | 2024-03-22 22:00:53 +0100 |
commit | c083a453dbe51853e26e02edd8b9346fb8618292 (patch) | |
tree | 1c0bef4d470bc4f14c366c9548d024c4bb8569f8 /gcc/fortran/interface.cc | |
parent | 65b7d1862e11784a0ce67ab758e06dd8aa65b181 (diff) | |
download | gcc-c083a453dbe51853e26e02edd8b9346fb8618292.zip gcc-c083a453dbe51853e26e02edd8b9346fb8618292.tar.gz gcc-c083a453dbe51853e26e02edd8b9346fb8618292.tar.bz2 |
Fortran: no size check passing NULL() without MOLD argument [PR55978]
gcc/fortran/ChangeLog:
PR fortran/55978
* interface.cc (gfc_compare_actual_formal): Skip size check for
NULL() actual without MOLD argument.
gcc/testsuite/ChangeLog:
PR fortran/55978
* gfortran.dg/null_actual_5.f90: New test.
Diffstat (limited to 'gcc/fortran/interface.cc')
-rw-r--r-- | gcc/fortran/interface.cc | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/fortran/interface.cc b/gcc/fortran/interface.cc index 64b9055..7b86a33 100644 --- a/gcc/fortran/interface.cc +++ b/gcc/fortran/interface.cc @@ -3439,6 +3439,10 @@ gfc_compare_actual_formal (gfc_actual_arglist **ap, gfc_formal_arglist *formal, if (f->sym->ts.type == BT_CLASS) goto skip_size_check; + /* Skip size check for NULL() actual without MOLD argument. */ + if (a->expr->expr_type == EXPR_NULL && a->expr->ts.type == BT_UNKNOWN) + goto skip_size_check; + actual_size = get_expr_storage_size (a->expr); formal_size = get_sym_storage_size (f->sym); if (actual_size != 0 && actual_size < formal_size |