aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2014-05-19 14:32:23 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2014-05-19 14:32:23 +0000
commit051351362bfe8552549443b77bdbd0ac5e003eac (patch)
treeaf10f92a91fffb8d09a0fb417dee649957a83b4b
parent40ba8dfb395e8ed85990a2655cf0d8a0f7619e0c (diff)
downloadgcc-051351362bfe8552549443b77bdbd0ac5e003eac.zip
gcc-051351362bfe8552549443b77bdbd0ac5e003eac.tar.gz
gcc-051351362bfe8552549443b77bdbd0ac5e003eac.tar.bz2
re PR middle-end/61209 (internal compiler error: in fold_convert_loc, at fold-const.c:1950)
2014-05-19 Richard Biener <rguenther@suse.de> PR tree-optimization/61209 * tree-ssa-sccvn.c (visit_phi): Avoid setting expr to VN_TOP. * gfortran.dg/pr61209.f90: New testcase. From-SVN: r210613
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/pr61209.f9046
-rw-r--r--gcc/tree-ssa-sccvn.c6
4 files changed, 60 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4f48f5d..90eca0c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2014-05-19 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/61209
+ * tree-ssa-sccvn.c (visit_phi): Avoid setting expr to VN_TOP.
+
2014-05-19 Nick Clifton <nickc@redhat.com>
* except.c (init_eh): Fix computation of builtin setjmp buffer
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index d731eb9..83b4264 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2014-05-19 Richard Biener <rguenther@suse.de>
+ PR tree-optimization/61209
+ * gfortran.dg/pr61209.f90: New testcase.
+
+2014-05-19 Richard Biener <rguenther@suse.de>
+
PR tree-optimization/61184
* c-c++-common/torture/pr61184.c: New testcase.
diff --git a/gcc/testsuite/gfortran.dg/pr61209.f90 b/gcc/testsuite/gfortran.dg/pr61209.f90
new file mode 100644
index 0000000..481714d
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr61209.f90
@@ -0,0 +1,46 @@
+! { dg-do compile }
+! { dg-options "-O -fbounds-check" }
+MODULE array_types
+ INTERFACE array_data
+ MODULE PROCEDURE array_data_i1d
+ END INTERFACE
+ TYPE array_i1d_type
+ END TYPE array_i1d_type
+ TYPE array_i1d_obj
+ TYPE(array_i1d_type), POINTER :: low
+ END TYPE array_i1d_obj
+ TYPE dbcsr_type
+ TYPE(array_i1d_obj) :: local_rows
+ LOGICAL :: local_indexing
+ END TYPE dbcsr_type
+ TYPE dbcsr_obj
+ TYPE(dbcsr_type) :: m
+ END TYPE dbcsr_obj
+CONTAINS
+ FUNCTION array_data_i1d(array) RESULT (DATA)
+ TYPE(array_i1d_obj), INTENT(IN) :: array
+ INTEGER, DIMENSION(:), POINTER :: DATA
+ IF (ASSOCIATED (array%low)) THEN
+ ENDIF
+ END FUNCTION array_data_i1d
+ SUBROUTINE dbcsr_make_index_list (matrix, thread_redist)
+ TYPE(dbcsr_obj), INTENT(INOUT) :: matrix
+ LOGICAL, INTENT(IN) :: thread_redist
+ INTEGER, ALLOCATABLE, DIMENSION(:, :) :: blki
+ INTEGER, DIMENSION(:), POINTER :: local_rows, td
+ INTEGER :: blk
+ nthreads = 0
+ IF (nthreads .GT. 0 .AND. thread_redist) THEN
+ IF (matrix%m%local_indexing) THEN
+ local_rows => array_data (matrix%m%local_rows)
+ ENDIF
+ CALL dbcsr_build_row_index_inplace (thr_c, nthreads)
+ IF (matrix%m%local_indexing) THEN
+ DO blk = 1, nblks
+ IF (td(local_rows(blki(1, blk))) .EQ. ithread) THEN
+ ENDIF
+ ENDDO
+ ENDIF
+ ENDIF
+ END SUBROUTINE dbcsr_make_index_list
+END MODULE
diff --git a/gcc/tree-ssa-sccvn.c b/gcc/tree-ssa-sccvn.c
index 84c0d6e..bd60372 100644
--- a/gcc/tree-ssa-sccvn.c
+++ b/gcc/tree-ssa-sccvn.c
@@ -3125,12 +3125,14 @@ visit_phi (gimple phi)
if (is_gimple_min_invariant (sameval))
{
VN_INFO (PHI_RESULT (phi))->has_constants = true;
- VN_INFO (PHI_RESULT (phi))->expr = sameval;
+ if (sameval != VN_TOP)
+ VN_INFO (PHI_RESULT (phi))->expr = sameval;
}
else
{
VN_INFO (PHI_RESULT (phi))->has_constants = false;
- VN_INFO (PHI_RESULT (phi))->expr = sameval;
+ if (sameval != VN_TOP)
+ VN_INFO (PHI_RESULT (phi))->expr = sameval;
}
if (TREE_CODE (sameval) == SSA_NAME)