aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2010-12-18 19:15:10 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2010-12-18 19:15:10 +0100
commit81fada9aa760fe9e502fbc0ad0e4bf94ecd1269f (patch)
tree2ec83785466dc6ee7922f916a272411c1c679773
parent16923e7bf333db732aed3686972b40ac2e458109 (diff)
downloadgcc-81fada9aa760fe9e502fbc0ad0e4bf94ecd1269f.zip
gcc-81fada9aa760fe9e502fbc0ad0e4bf94ecd1269f.tar.gz
gcc-81fada9aa760fe9e502fbc0ad0e4bf94ecd1269f.tar.bz2
re PR tree-optimization/46985 (ICE: SIGSEGV in is_gimple_min_invariant (gimple.c:2742) with -fno-tree-ccp -fno-tree-dominator-opts -fno-tree-fre)
PR tree-optimization/46985 * tree-scalar-evolution.c (instantiate_scev_r): If chrec is NULL, return it immediately. * gfortran.dg/pr46985.f90: New test. From-SVN: r168027
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/pr46985.f9017
-rw-r--r--gcc/tree-scalar-evolution.c3
4 files changed, 30 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9536e0a..7f2a5ae 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2010-12-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/46985
+ * tree-scalar-evolution.c (instantiate_scev_r): If chrec is NULL,
+ return it immediately.
+
2010-12-18 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
PR target/46915
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 64b9ffe..711f343 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2010-12-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/46985
+ * gfortran.dg/pr46985.f90: New test.
+
2010-12-18 Eric Botcazou <ebotcazou@adacore.com>
PR tree-optimization/46232
diff --git a/gcc/testsuite/gfortran.dg/pr46985.f90 b/gcc/testsuite/gfortran.dg/pr46985.f90
new file mode 100644
index 0000000..141641d
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr46985.f90
@@ -0,0 +1,17 @@
+! PR tree-optimization/46985
+! { dg-do compile }
+! { dg-options "-O -ftree-pre -ftree-vrp -fno-tree-ccp -fno-tree-dominator-opts -fno-tree-fre" }
+
+ type :: t
+ integer :: i
+ end type t
+ type(t), target :: tar(2) = (/t(2), t(4)/)
+ integer, pointer :: ptr(:)
+ ptr => tar%i
+ call foo (ptr)
+contains
+ subroutine foo (arg)
+ integer :: arg(:)
+ arg = arg - 1
+ end subroutine
+end
diff --git a/gcc/tree-scalar-evolution.c b/gcc/tree-scalar-evolution.c
index 4a4bda9..24be2e8 100644
--- a/gcc/tree-scalar-evolution.c
+++ b/gcc/tree-scalar-evolution.c
@@ -2616,7 +2616,8 @@ instantiate_scev_r (basic_block instantiate_below,
if (size_expr++ > PARAM_VALUE (PARAM_SCEV_MAX_EXPR_SIZE))
return chrec_dont_know;
- if (automatically_generated_chrec_p (chrec)
+ if (chrec == NULL_TREE
+ || automatically_generated_chrec_p (chrec)
|| is_gimple_min_invariant (chrec))
return chrec;