From 9675848734503992c5759b73f079c06f684e63e2 Mon Sep 17 00:00:00 2001 From: jakub Date: Tue, 3 Apr 2012 08:49:14 +0000 Subject: [PATCH] PR tree-optimization/52835 * tree-data-ref.c (build_rdg): Return NULL if compute_data_dependences_for_loop failed. * gfortran.dg/pr52835.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@186101 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gfortran.dg/pr52835.f90 | 16 ++++++++++++++++ gcc/tree-data-ref.c | 11 +++++------ 4 files changed, 32 insertions(+), 6 deletions(-) create mode 100644 gcc/testsuite/gfortran.dg/pr52835.f90 diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 96bcc5c..72e14f4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2012-04-03 Jakub Jelinek + + PR tree-optimization/52835 + * tree-data-ref.c (build_rdg): Return NULL if + compute_data_dependences_for_loop failed. + 2012-04-03 Eric Botcazou * varasm.c (initializer_constant_valid_for_bitfield_p): Return true diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5a5ee57..7fe8a18 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-04-03 Jakub Jelinek + + PR tree-optimization/52835 + * gfortran.dg/pr52835.f90: New test. + 2012-04-03 Eric Botcazou * gnat.dg/specs/aggr5.ads: New test. diff --git a/gcc/testsuite/gfortran.dg/pr52835.f90 b/gcc/testsuite/gfortran.dg/pr52835.f90 new file mode 100644 index 0000000..a72951a --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr52835.f90 @@ -0,0 +1,16 @@ +! PR tree-optimization/52835 +! { dg-do compile } +! { dg-options "-O3 -fdump-tree-optimized" } + +subroutine foo (x, y, z, n) + integer :: n, i + real :: x(n), y(n), z(n) + do i = 1, n + z(i) = 0.0 + y(i) = 0.0 + call bar (y(i), z(i), x(i)) + end do +end subroutine + +! { dg-final { scan-tree-dump "bar " "optimized" } } +! { dg-final { cleanup-tree-dump "optimized" } } diff --git a/gcc/tree-data-ref.c b/gcc/tree-data-ref.c index 5dcafd3..6fb0d23 100644 --- a/gcc/tree-data-ref.c +++ b/gcc/tree-data-ref.c @@ -5109,20 +5109,19 @@ build_rdg (struct loop *loop, VEC (data_reference_p, heap) **datarefs) { struct graph *rdg = NULL; - VEC (gimple, heap) *stmts = VEC_alloc (gimple, heap, 10); - compute_data_dependences_for_loop (loop, false, loop_nest, datarefs, - dependence_relations); - - if (known_dependences_p (*dependence_relations)) + if (compute_data_dependences_for_loop (loop, false, loop_nest, datarefs, + dependence_relations) + && known_dependences_p (*dependence_relations)) { + VEC (gimple, heap) *stmts = VEC_alloc (gimple, heap, 10); stmts_from_loop (loop, &stmts); rdg = build_empty_rdg (VEC_length (gimple, stmts)); create_rdg_vertices (rdg, stmts); create_rdg_edges (rdg, *dependence_relations); + VEC_free (gimple, heap, stmts); } - VEC_free (gimple, heap, stmts); return rdg; } -- 2.7.4