aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Burnus <tobias@codesourcery.com>2021-03-26 08:39:24 +0100
committerTobias Burnus <tobias@codesourcery.com>2021-03-26 08:39:24 +0100
commit9d45e848d02e71c11420ec49630281e9a29c89b8 (patch)
treefe661a06323372541ebf55f8f6add7c487096b6e
parent4493b1c1ad7e2b2a60ad70563b81f51173115471 (diff)
downloadgcc-9d45e848d02e71c11420ec49630281e9a29c89b8.zip
gcc-9d45e848d02e71c11420ec49630281e9a29c89b8.tar.gz
gcc-9d45e848d02e71c11420ec49630281e9a29c89b8.tar.bz2
Fortran: Fix intrinsic null() handling [PR99651]
gcc/fortran/ChangeLog: PR fortran/99651 * intrinsic.c (gfc_intrinsic_func_interface): Set attr.proc = PROC_INTRINSIC if FL_PROCEDURE. gcc/testsuite/ChangeLog: PR fortran/99651 * gfortran.dg/null_11.f90: New test.
-rw-r--r--gcc/fortran/intrinsic.c5
-rw-r--r--gcc/testsuite/gfortran.dg/null_11.f9016
2 files changed, 21 insertions, 0 deletions
diff --git a/gcc/fortran/intrinsic.c b/gcc/fortran/intrinsic.c
index e68eff8..17fd92e 100644
--- a/gcc/fortran/intrinsic.c
+++ b/gcc/fortran/intrinsic.c
@@ -5071,6 +5071,11 @@ got_specific:
sym->attr.intrinsic = 1;
sym->attr.flavor = FL_PROCEDURE;
}
+ if (sym->attr.flavor == FL_PROCEDURE)
+ {
+ sym->attr.function = 1;
+ sym->attr.proc = PROC_INTRINSIC;
+ }
if (!sym->module)
gfc_intrinsic_symbol (sym);
diff --git a/gcc/testsuite/gfortran.dg/null_11.f90 b/gcc/testsuite/gfortran.dg/null_11.f90
new file mode 100644
index 0000000..040cc26
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/null_11.f90
@@ -0,0 +1,16 @@
+! { dg-do compile }
+!
+! PR fortran/99651
+!
+module m
+ type :: CHAR_STAR
+ character(len=1),dimension(:),pointer :: ptr
+ end type
+ type(CHAR_STAR), parameter ::CHAR_STAR_NULL = CHAR_STAR(NULL())
+end module m
+
+use m
+type typeNode
+ type(typeNode), pointer :: Next => null()
+end type typeNode
+end