aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Pinski <pinskia@gmail.com>2011-07-12 11:46:10 -0700
committerAndrew Pinski <pinskia@gcc.gnu.org>2011-07-12 11:46:10 -0700
commit10b75750f251ad6a5cdeb505f51ddc4638d81e14 (patch)
treeb6aaa0b34d8aa4cfcc78d2a0b9f334d368d08d62
parent4f42d714a265f15349dc745ff59a49b4c0a5b6c3 (diff)
downloadgcc-10b75750f251ad6a5cdeb505f51ddc4638d81e14.zip
gcc-10b75750f251ad6a5cdeb505f51ddc4638d81e14.tar.gz
gcc-10b75750f251ad6a5cdeb505f51ddc4638d81e14.tar.bz2
re PR rtl-optimization/49474 (ppc ICEs with -O3 (bootstrapping with -O3 and --disable-checking))
2011-07-12 Andrew Pinski <pinskia@gmail.com> PR rtl-opt/49474 * cprop.c (find_implicit_sets): Correct the condition. 2011-07-12 Andrew Pinski <pinskia@gmail.com> PR rtl-opt/49474 * gcc.c-torture/compile/pr49474.c: New testcase. From-SVN: r176213
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/cprop.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr49474.c16
4 files changed, 27 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 462ee7d..f3abf4d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2011-07-12 Andrew Pinski <pinskia@gmail.com>
+
+ PR rtl-opt/49474
+ * cprop.c (find_implicit_sets): Correct the condition.
+
2011-07-12 Richard Henderson <rth@redhat.com>
PR target/49713
diff --git a/gcc/cprop.c b/gcc/cprop.c
index 83193b9..584ffd2 100644
--- a/gcc/cprop.c
+++ b/gcc/cprop.c
@@ -1332,7 +1332,7 @@ find_implicit_sets (void)
FOR_EACH_BB (bb)
{
/* Check for more than one successor. */
- if (! EDGE_COUNT (bb->succs) > 1)
+ if (EDGE_COUNT (bb->succs) <= 1)
continue;
cond = fis_get_condition (BB_END (bb));
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 88f61cc..5d1cab6 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2011-07-12 Andrew Pinski <pinskia@gmail.com>
+
+ PR rtl-opt/49474
+ * gcc.c-torture/compile/pr49474.c: New testcase.
+
2011-07-12 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/49712
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr49474.c b/gcc/testsuite/gcc.c-torture/compile/pr49474.c
new file mode 100644
index 0000000..0368ccb
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr49474.c
@@ -0,0 +1,16 @@
+typedef struct gfc_formal_arglist
+{
+ int next;
+}
+gfc_actual_arglist;
+update_arglist_pass (gfc_actual_arglist* lst, int po, unsigned argpos,
+ const char *name)
+{
+ ((void)(__builtin_expect(!(argpos > 0), 0) ? __builtin_unreachable(), 0 : 0));
+ if (argpos == 1)
+ return 0;
+ if (lst)
+ lst->next = update_arglist_pass (lst->next, po, argpos - 1, name);
+ else
+ lst = update_arglist_pass (((void *)0), po, argpos - 1, name);
+}