Bail out in gfc_dep_compare_expr for a NULL argument.
authorMartin Liska <mliska@suse.cz>
Tue, 10 Dec 2019 18:57:30 +0000 (19:57 +0100)
committerMartin Liska <marxin@gcc.gnu.org>
Tue, 10 Dec 2019 18:57:30 +0000 (18:57 +0000)
2019-12-10  Martin Liska  <mliska@suse.cz>

PR fortran/92874
* dependency.c (gfc_dep_compare_expr): Bail out
when one of the arguments is null.
2019-12-10  Martin Liska  <mliska@suse.cz>

PR fortran/92874
* gfortran.dg/pr92874.f90: New test.

From-SVN: r279181

gcc/fortran/ChangeLog
gcc/fortran/dependency.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/pr92874.f90 [new file with mode: 0644]

index b34a684a3b5092de0dcc3d9b8789f386be4d622e..bcc821806e5989b7e859b29f6d02ec5bae0c5feb 100644 (file)
@@ -1,3 +1,9 @@
+2019-12-10  Martin Liska  <mliska@suse.cz>
+
+       PR fortran/92874
+       * dependency.c (gfc_dep_compare_expr): Bail out
+       when one of the arguments is null.
+
 2019-12-10  Thomas Koenig  <tkoenig@gcc.gnu.org>
 
        PR fortran/92863
index 394d85b48a2fe0cd67db56583f2ac34d3f9c8513..eb741137d6000cf423a675221eca3da640401911 100644 (file)
@@ -319,6 +319,8 @@ gfc_dep_compare_expr (gfc_expr *e1, gfc_expr *e2)
 
   if (e1 == NULL && e2 == NULL)
     return 0;
+  else if (e1 == NULL || e2 == NULL)
+    return -2;
 
   e1 = gfc_discard_nops (e1);
   e2 = gfc_discard_nops (e2);
index 39e5366c366e3d8efdedaee749b47b30f5ea76fe..06ffc521bcf1e81fee6117be96c6f66dd322d408 100644 (file)
@@ -1,3 +1,8 @@
+2019-12-10  Martin Liska  <mliska@suse.cz>
+
+       PR fortran/92874
+       * gfortran.dg/pr92874.f90: New test.
+
 2019-12-10  Thomas Koenig  <tkoenig@gcc.gnu.org>
 
        PR fortran/92863
diff --git a/gcc/testsuite/gfortran.dg/pr92874.f90 b/gcc/testsuite/gfortran.dg/pr92874.f90
new file mode 100644 (file)
index 0000000..a1fca3d
--- /dev/null
@@ -0,0 +1,11 @@
+! { dg-do compile }
+! { dg-options "-O2" }
+! PR fortran/92874
+program p
+   call s('a')
+   call s('abc')
+end
+subroutine s(x)
+   character(*) :: x
+   print *, (x(1:1) == x(1:))
+end