[PATCH] openmp: fix UBSAN error at gcc/fortran/openmp.c:4737

Martin Liška mliska@suse.cz
Mon Aug 17 08:41:41 GMT 2020


Since 21cfe724cbdc30612bf1ef59b26f19ada2210832 there's a new
OMP_LIST_NONTEMPORAL value, but it was missing in
resolve_omp_clauses static array that is defined at the function
beginning:

./xgcc -B. /home/marxin/Programming/gcc/gcc/testsuite/gfortran.dg/gomp/nontemporal-1.f90 -fopenmp -c
../../gcc/fortran/openmp.c:4737:28: runtime error: index 21 out of bounds for type 'char *[21]'
     #0 0xbdb956 in resolve_omp_clauses ../../gcc/fortran/openmp.c:4737
     #1 0xbeb076 in resolve_omp_do ../../gcc/fortran/openmp.c:6139
     #2 0xbf029a in gfc_resolve_omp_directive(gfc_code*, gfc_namespace*) ../../gcc/fortran/openmp.c:6792
     #3 0xcb6363 in gfc_resolve_code(gfc_code*, gfc_namespace*) ../../gcc/fortran/resolve.c:12185
     #4 0xcef8cf in resolve_codes ../../gcc/fortran/resolve.c:17303

Ready for master?
Thanks,
Martin

gcc/fortran/ChangeLog:

	* openmp.c (resolve_omp_clauses): Add NONTEMPORAL to clause
	names.
---
  gcc/fortran/openmp.c | 3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/gcc/fortran/openmp.c b/gcc/fortran/openmp.c
index c44a2530b88..60d8e5573c2 100644
--- a/gcc/fortran/openmp.c
+++ b/gcc/fortran/openmp.c
@@ -4369,7 +4369,8 @@ resolve_omp_clauses (gfc_code *code, gfc_omp_clauses *omp_clauses,
      = { "PRIVATE", "FIRSTPRIVATE", "LASTPRIVATE", "COPYPRIVATE", "SHARED",
  	"COPYIN", "UNIFORM", "ALIGNED", "LINEAR", "DEPEND", "MAP",
  	"TO", "FROM", "REDUCTION", "DEVICE_RESIDENT", "LINK", "USE_DEVICE",
-	"CACHE", "IS_DEVICE_PTR", "USE_DEVICE_PTR", "USE_DEVICE_ADDR" };
+	"CACHE", "IS_DEVICE_PTR", "USE_DEVICE_PTR", "USE_DEVICE_ADDR",
+	"NONTEMPORAL" };
  
    if (omp_clauses == NULL)
      return;
-- 
2.28.0



More information about the Gcc-patches mailing list