From c6afc44abf6e045d737d600f6334ff6cae9f6033 Mon Sep 17 00:00:00 2001 From: Kwok Cheung Yeung Date: Thu, 31 Jan 2019 07:54:58 -0800 Subject: [PATCH] Ensure that optional-arguments check is specific to Fortran gcc/ * omp-general.c (omp_is_optional_argument): Add comment. Add extra check for Fortran language. Reviewed-by: Julian Brown (cherry picked from openacc-gcc-9-branch commit abe09848284672b86613258711044b5019fadeb6) --- gcc/ChangeLog.omp | 5 +++++ gcc/omp-general.c | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog.omp b/gcc/ChangeLog.omp index 36cabca9860e..94da6334a709 100644 --- a/gcc/ChangeLog.omp +++ b/gcc/ChangeLog.omp @@ -1,3 +1,8 @@ +2019-01-31 Kwok Cheung Yeung + + * omp-general.c (omp_is_optional_argument): Add comment. Add extra + check for Fortran language. + 2019-01-30 Kwok Cheung Yeung * omp-general.c (omp_is_optional_argument): New. diff --git a/gcc/omp-general.c b/gcc/omp-general.c index 64559fa6d9f0..17f3e0ad8f6b 100644 --- a/gcc/omp-general.c +++ b/gcc/omp-general.c @@ -53,7 +53,12 @@ omp_find_clause (tree clauses, enum omp_clause_code kind) bool omp_is_optional_argument (tree decl) { - return TREE_CODE (decl) == PARM_DECL && DECL_BY_REFERENCE (decl) + /* A passed-by-reference Fortran optional argument is similar to + a normal argument, but since it can be null the type is a + POINTER_TYPE rather than a REFERENCE_TYPE. */ + return lang_GNU_Fortran () + && TREE_CODE (decl) == PARM_DECL + && DECL_BY_REFERENCE (decl) && TREE_CODE (TREE_TYPE (decl)) == POINTER_TYPE; } -- 2.47.2