aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2005-10-06 01:41:47 -0700
committerRichard Henderson <rth@gcc.gnu.org>2005-10-06 01:41:47 -0700
commit5872662b0b0cc334e777f97950c422d906925abc (patch)
treed1913967ded94d597e0e5a0d02483cb68dbbe9ab /gcc
parentd6b27b56a238b4345b54627d5ee41c85adf05ea1 (diff)
downloadgcc-5872662b0b0cc334e777f97950c422d906925abc.zip
gcc-5872662b0b0cc334e777f97950c422d906925abc.tar.gz
gcc-5872662b0b0cc334e777f97950c422d906925abc.tar.bz2
re PR middle-end/24049 (compiler error: Segmentation fault In function 'DESX_CBCUpdate')
PR 24049 * passes.c (init_optimization_passes): Move pass_lower_vector_ssa under pass_vectorize. Clear TODO_ggc_collect from the dce pass under pass_vectorize. From-SVN: r105029
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/passes.c7
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr24049.c10
3 files changed, 23 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1ef72bc..30d4aff 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2005-10-06 Richard Henderson <rth@redhat.com>
+
+ PR 24049
+ * passes.c (init_optimization_passes): Move pass_lower_vector_ssa
+ under pass_vectorize. Clear TODO_ggc_collect from the dce pass
+ under pass_vectorize.
+
2005-10-05 Devang Patel <dpatel@apple.com>
PR Debug/23205
diff --git a/gcc/passes.c b/gcc/passes.c
index b03eae3..daa752e 100644
--- a/gcc/passes.c
+++ b/gcc/passes.c
@@ -588,14 +588,19 @@ init_optimization_passes (void)
/* NEXT_PASS (pass_may_alias) cannot be done again because the
vectorizer creates alias relations that are not supported by
pass_may_alias. */
- NEXT_PASS (pass_lower_vector_ssa);
NEXT_PASS (pass_complete_unroll);
NEXT_PASS (pass_iv_optimize);
NEXT_PASS (pass_tree_loop_done);
*p = NULL;
p = &pass_vectorize.sub;
+ NEXT_PASS (pass_lower_vector_ssa);
+ /* ??? The loop optimizers are not GC safe. See PR 21805.
+ Turn off GC while registering this pass. */
+ pass_dce.todo_flags_finish &= ~TODO_ggc_collect;
NEXT_PASS (pass_dce);
+ pass_dce.todo_flags_finish |= TODO_ggc_collect;
+ gcc_assert (p != &pass_dce.next);
*p = NULL;
p = &pass_loop2.sub;
diff --git a/gcc/testsuite/gcc.dg/vect/pr24049.c b/gcc/testsuite/gcc.dg/vect/pr24049.c
new file mode 100644
index 0000000..ee03fe3
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/pr24049.c
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "-O1 -ftree-vectorize --param ggc-min-heapsize=0 --param ggc-min-expand=0" } */
+
+int DES_CBCUpdate(unsigned char * output, int len)
+{
+ int work[2];
+ unsigned int i;
+ for(i = 0;i < len/8;i++)
+ unscrunch (&output[8*i], work);
+}