Commit 671b487d by Thomas Koenig

re PR fortran/51338 (seg fault in gfc_dep_compare_expr with -O2)

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

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

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

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

From-SVN: r182024
parent dfa51991
2011-12-05 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/51338
* dependency.c (are_identical_variables): Handle case where
end fields of substring references are NULL.
2011-12-04 Tobias Burnus <burnus@net-b.de>
PR fortran/51383
......@@ -12,7 +18,7 @@
* class.c (gfc_build_class_symbol): Handle
attr.select_type_temporary.
2011-12-03 Tobias Burnus <burnus@net-b.de>
2011-12-03 Tobias Burnus <burnus@net-b.de>
PR fortran/50684
* check.c (variable_check): Fix intent(in) check.
......
......@@ -173,9 +173,19 @@ 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:
......
2011-12-05 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/51338
* gfortran.dg/assumed_charlen_substring_1.f90: New test.
2011-12-05 Richard Sandiford <rdsandiford@googlemail.com>
* g++.dg/debug/pr46338.C: Add dg-require-profiling.
......
! { dg-do compile }
! { dg-options "-O -fdump-tree-original" }
! PR 51338 - this used to ICE.
! Original test case by Bud Davis.
subroutine foo(a,b)
character(len=*) :: a
if (a(1:) /= a(1:)) call do_not_use
end subroutine foo
! { dg-final { scan-tree-dump-times "do_not_use" 0 "original" } }
! { dg-final { cleanup-tree-dump "original" } }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment