diff options
author | Harald Anlauf <anlauf@gmx.de> | 2023-03-09 18:59:08 +0100 |
---|---|---|
committer | Harald Anlauf <anlauf@gmx.de> | 2023-03-17 20:50:24 +0100 |
commit | c5cb9d8819eb9551d23f77e63cb3399115f0aab8 (patch) | |
tree | 180f51cf1c74150d194039893ca1227f9041ddd4 /gcc/fortran | |
parent | d06cdb8e7593cafd44435f02ba63987ec38036c9 (diff) | |
download | gcc-c5cb9d8819eb9551d23f77e63cb3399115f0aab8.zip gcc-c5cb9d8819eb9551d23f77e63cb3399115f0aab8.tar.gz gcc-c5cb9d8819eb9551d23f77e63cb3399115f0aab8.tar.bz2 |
Fortran: fix ICE with bind(c) in block data [PR104332]
gcc/fortran/ChangeLog:
PR fortran/104332
* resolve.c (resolve_symbol): Avoid NULL pointer dereference while
checking a symbol with the BIND(C) attribute.
gcc/testsuite/ChangeLog:
PR fortran/104332
* gfortran.dg/bind_c_usage_34.f90: New test.
(cherry picked from commit e20e5d9dc11b64e8eabce6803c91cb5768207083)
Diffstat (limited to 'gcc/fortran')
-rw-r--r-- | gcc/fortran/resolve.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 288970d..98e9404 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -15666,8 +15666,8 @@ resolve_symbol (gfc_symbol *sym) /* First, make sure the variable is declared at the module-level scope (J3/04-007, Section 15.3). */ - if (sym->ns->proc_name->attr.flavor != FL_MODULE && - sym->attr.in_common == 0) + if (!(sym->ns->proc_name && sym->ns->proc_name->attr.flavor == FL_MODULE) + && !sym->attr.in_common) { gfc_error ("Variable %qs at %L cannot be BIND(C) because it " "is neither a COMMON block nor declared at the " |