aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Berlin <dberlin@dberlin.org>2005-01-17 00:45:51 +0000
committerDaniel Berlin <dberlin@gcc.gnu.org>2005-01-17 00:45:51 +0000
commit7f233d9f549b29a7fcd4f5b54b8dde438bcb5119 (patch)
tree61b6d5b4f7040d2dde138b6faf48f1e5a8930713
parent15ce652006345a094c11c04e5fa2835c95dc5775 (diff)
downloadgcc-7f233d9f549b29a7fcd4f5b54b8dde438bcb5119.zip
gcc-7f233d9f549b29a7fcd4f5b54b8dde438bcb5119.tar.gz
gcc-7f233d9f549b29a7fcd4f5b54b8dde438bcb5119.tar.bz2
tree-ssa-pre.c (add_to_sets): s1 may be NULL.
2005-01-16 Daniel Berlin <dberlin@dberlin.org> * tree-ssa-pre.c (add_to_sets): s1 may be NULL. (compute_avail): Uses don't go in tmp_gen. From-SVN: r93749
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-3.c14
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect.exp2
-rw-r--r--gcc/tree-ssa-pre.c6
4 files changed, 23 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a301509..fb1eebe 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2005-01-16 Daniel Berlin <dberlin@dberlin.org>
+
+ * tree-ssa-pre.c (add_to_sets): s1 may be NULL.
+ (compute_avail): Uses don't go in tmp_gen.
+
2005-01-16 Steven Bosscher <stevenb@suse.de>
* ggc-page.c (ggc_alloc_stat): Use __builtin_ctzl instead of a
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-3.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-3.c
new file mode 100644
index 0000000..839f351
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-3.c
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+unsigned foo1 (unsigned a, unsigned b)
+{
+ unsigned i, j, k;
+ for (i = 0; i != a; i++)
+ {
+ j += 4*b;
+ k += 4*a;
+ }
+ return j + k;
+}
+/* We should eliminate both 4*b and 4*a from the main body of the loop */
+/* { dg-final { scan-tree-dump-times "Eliminated:2" 1 "pre"} } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect.exp b/gcc/testsuite/gcc.dg/vect/vect.exp
index 94fd56c..1a5f7ed 100644
--- a/gcc/testsuite/gcc.dg/vect/vect.exp
+++ b/gcc/testsuite/gcc.dg/vect/vect.exp
@@ -23,7 +23,7 @@ load_lib gcc-dg.exp
set DEFAULT_VECTCFLAGS ""
# These flags are used for all targets.
-lappend DEFAULT_VECTCFLAGS "-O2" "-ftree-vectorize" "-fdump-tree-vect-stats"
+lappend DEFAULT_VECTCFLAGS "-O2" "-ftree-vectorize" "-fdump-tree-vect-stats" "-fno-tree-pre"
# If the target system supports vector instructions, the default action
# for a test is 'run', otherwise it's 'compile'. Save current default.
diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
index 8e22e20..ae3e66d 100644
--- a/gcc/tree-ssa-pre.c
+++ b/gcc/tree-ssa-pre.c
@@ -1695,7 +1695,8 @@ add_to_sets (tree var, tree expr, vuse_optype vuses, bitmap_set_t s1,
if (var != expr)
vn_add (var, val, NULL);
- bitmap_insert_into_set (s1, var);
+ if (s1)
+ bitmap_insert_into_set (s1, var);
bitmap_value_insert_into_set (s2, var);
}
@@ -1881,8 +1882,7 @@ compute_avail (void)
for (j = 0; j < NUM_USES (STMT_USE_OPS (stmt)); j++)
{
tree use = USE_OP (STMT_USE_OPS (stmt), j);
- add_to_sets (use, use, NULL, TMP_GEN (block),
- AVAIL_OUT (block));
+ add_to_sets (use, use, NULL, NULL, AVAIL_OUT (block));
}
}