diff options
author | Tobias Burnus <tobias@codesourcery.com> | 2021-03-12 16:34:10 +0100 |
---|---|---|
committer | Tobias Burnus <tobias@codesourcery.com> | 2021-03-12 16:34:10 +0100 |
commit | d0655763483008a421608d059cf26c93077621a9 (patch) | |
tree | f6ef42255470abe12c09f3414a977a5813d6985e /gcc/fortran/resolve.c | |
parent | 0b5437510c13dc0879349a4f259c800d2ce02eb2 (diff) | |
download | gcc-d0655763483008a421608d059cf26c93077621a9.zip gcc-d0655763483008a421608d059cf26c93077621a9.tar.gz gcc-d0655763483008a421608d059cf26c93077621a9.tar.bz2 |
Fortran/OpenMP: Accept implicit-save DATA vars for threadprivate [PR99514]
gcc/fortran/ChangeLog:
PR fortran/99514
* resolve.c (resolve_symbol): Accept vars which are in DATA
and hence (either) implicit SAVE (or in common).
gcc/testsuite/ChangeLog:
PR fortran/99514
* gfortran.dg/gomp/threadprivate-1.f90: New test.
Diffstat (limited to 'gcc/fortran/resolve.c')
-rw-r--r-- | gcc/fortran/resolve.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 2a91ae7..32015c2 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -16024,12 +16024,12 @@ resolve_symbol (gfc_symbol *sym) } /* Check threadprivate restrictions. */ - if (sym->attr.threadprivate && !sym->attr.save + if (sym->attr.threadprivate + && !(sym->attr.save || sym->attr.data || sym->attr.in_common) && !(sym->ns->save_all && !sym->attr.automatic) - && (!sym->attr.in_common - && sym->module == NULL - && (sym->ns->proc_name == NULL - || sym->ns->proc_name->attr.flavor != FL_MODULE))) + && sym->module == NULL + && (sym->ns->proc_name == NULL + || sym->ns->proc_name->attr.flavor != FL_MODULE)) gfc_error ("Threadprivate at %L isn't SAVEd", &sym->declared_at); /* Check omp declare target restrictions. */ |