]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR fortran/51338 (seg fault in gfc_dep_compare_expr with -O2)
authorThomas Koenig <tkoenig@gcc.gnu.org>
Sun, 11 Dec 2011 20:03:43 +0000 (20:03 +0000)
committerThomas Koenig <tkoenig@gcc.gnu.org>
Sun, 11 Dec 2011 20:03:43 +0000 (20:03 +0000)
2011-12-11  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/51338
Backport from trunk
* dependency.c (are_identical_variables):  Handle case where
end fields of substring references are NULL.

2011-12-11  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/51338
Backport from trunk
* gfortran.dg/assumed_charlen_substring_1.f90:  New test.

From-SVN: r182209

gcc/fortran/ChangeLog
gcc/fortran/dependency.c
gcc/testsuite/ChangeLog

index ea5608c2473d20944e8005d28d56a62725eeb954..be149aa1e316c8ad12d9071509a8ebf47c129c01 100644 (file)
@@ -1,3 +1,10 @@
+2011-12-11  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+       PR fortran/51338
+       Backport from trunk
+       * dependency.c (are_identical_variables):  Handle case where
+       end fields of substring references are NULL.
+
 2011-12-08  Toon Moene  <toon@moene.org>
 
        PR fortran/51310
index 58cfb65bce19ce24da4d1ccdeb1701b1a06a7f6e..49e47fb48a559faa5e2cb28d6462dddcfafff13e 100644 (file)
@@ -163,9 +163,19 @@ gfc_are_identical_variables (gfc_expr *e1, gfc_expr *e2)
          break;
 
        case REF_SUBSTRING:
-         if (gfc_dep_compare_expr (r1->u.ss.start, r2->u.ss.start) != 0
-             || gfc_dep_compare_expr (r1->u.ss.end, r2->u.ss.end) != 0)
+         if (gfc_dep_compare_expr (r1->u.ss.start, r2->u.ss.start) != 0)
            return false;
+
+         /* If both are NULL, the end length compares equal, because we
+            are looking at the same variable. This can only happen for
+            assumed- or deferred-length character arguments.  */ 
+
+         if (r1->u.ss.end == NULL && r2->u.ss.end == NULL)
+           break;
+
+         if (gfc_dep_compare_expr (r1->u.ss.end, r2->u.ss.end) != 0)
+           return false;
+         
          break;
 
        default:
index d430d3cc54b6d1a796afdf3457ea4503b4bb6053..1ee6b0dbb623ac992bf4366e39cbc111e2b34b90 100644 (file)
@@ -1,3 +1,9 @@
+2011-12-11  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+       PR fortran/51338
+       Backport from trunk
+       * gfortran.dg/assumed_charlen_substring_1.f90:  New test.
+
 2011-12-09  Jakub Jelinek  <jakub@redhat.com>
 
        Backport from mainline