[og8] Ensure that optional-arguments check is specific to Fortran

Message ID 6241c291-77ae-b3d0-ba9e-ce8476610258@codesourcery.com
State New
Headers show
Series
  • [og8] Ensure that optional-arguments check is specific to Fortran
Related show

Commit Message

Kwok Cheung Yeung Jan. 31, 2019, 5:22 p.m.
Hi,

This adds an extra check in omp_is_optional_argument to confirm that 
Fortran is being used, to guard against it accidently matching against 
some other case in another language.

This will be committed to openacc-gcc-8-branch shortly.

Kwok

	gcc/
	* omp-general.c (omp_is_optional_argument): Add comment.  Add extra
	check for Fortran language.

Reviewed-by: Julian Brown <julian@codesourcery.com>

---
  gcc/ChangeLog.openacc | 5 +++++
  gcc/omp-general.c     | 7 ++++++-
  2 files changed, 11 insertions(+), 1 deletion(-)

-- 
2.8.1

Patch

diff --git a/gcc/ChangeLog.openacc b/gcc/ChangeLog.openacc
index 783ba6c..5104eaa 100644
--- a/gcc/ChangeLog.openacc
+++ b/gcc/ChangeLog.openacc
@@ -1,3 +1,8 @@ 
+2019-01-31  Kwok Cheung Yeung  <kcy@codesourcery.com>
+
+	* omp-general.c (omp_is_optional_argument): Add comment.  Add extra
+	check for Fortran language.
+
  2019-01-31  Julian Brown  <julian@codesourcery.com>

  	* gimplify.c (gimplify_scan_omp_clauses): Handle array sections on
diff --git a/gcc/omp-general.c b/gcc/omp-general.c
index dd37c46..8e37cfc 100644
--- a/gcc/omp-general.c
+++ b/gcc/omp-general.c
@@ -51,7 +51,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;
  }