From: Richard Guenther Date: Tue, 30 Dec 2008 10:28:01 +0000 (+0000) Subject: re PR tree-optimization/38564 (Revision 142662 caused ICE in insert_into_preds_of_block) X-Git-Tag: releases/gcc-4.4.0~1100 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b0331ccbe2cd52043b328f1bbd07f8f75bc9b97e;p=thirdparty%2Fgcc.git re PR tree-optimization/38564 (Revision 142662 caused ICE in insert_into_preds_of_block) 2008-12-30 Richard Guenther PR middle-end/38564 * fold-const.c (fold_comparison): Use the correct result type. * gcc.c-torture/compile/pr38564.c: New testcase. From-SVN: r142961 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 603b68d0b4da..1772b608765d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2008-12-30 Richard Guenther + + PR middle-end/38564 + * fold-const.c (fold_comparison): Use the correct result type. + 2008-12-30 Dorit Nuzman Ira Rosen diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 74a0a87d3cc2..be542b773b20 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -9036,17 +9036,17 @@ fold_comparison (enum tree_code code, tree type, tree op0, tree op1) switch (code) { case EQ_EXPR: - return build_int_cst (boolean_type_node, bitpos0 == bitpos1); + return constant_boolean_node (bitpos0 == bitpos1, type); case NE_EXPR: - return build_int_cst (boolean_type_node, bitpos0 != bitpos1); + return constant_boolean_node (bitpos0 != bitpos1, type); case LT_EXPR: - return build_int_cst (boolean_type_node, bitpos0 < bitpos1); + return constant_boolean_node (bitpos0 < bitpos1, type); case LE_EXPR: - return build_int_cst (boolean_type_node, bitpos0 <= bitpos1); + return constant_boolean_node (bitpos0 <= bitpos1, type); case GE_EXPR: - return build_int_cst (boolean_type_node, bitpos0 >= bitpos1); + return constant_boolean_node (bitpos0 >= bitpos1, type); case GT_EXPR: - return build_int_cst (boolean_type_node, bitpos0 > bitpos1); + return constant_boolean_node (bitpos0 > bitpos1, type); default:; } } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4f010a2782d5..7c6dc8d5a1f3 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2008-12-30 Richard Guenther + + PR middle-end/38564 + * gcc.c-torture/compile/pr38564.c: New testcase. + 2008-12-29 Dorit Nuzman Ira Rosen diff --git a/gcc/testsuite/gcc.c-torture/compile/pr38564.c b/gcc/testsuite/gcc.c-torture/compile/pr38564.c new file mode 100644 index 000000000000..de365cc1f55c --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr38564.c @@ -0,0 +1,22 @@ +struct S +{ + struct S *n, *p; +} *s; + +void bar (void *); + +int +foo (int x) +{ + struct S p = { &p, &p }; + int i; + for (i = 0; i < x; i++) + bar (s); + return p.n == &p; +} + +int dialog_calendar(int state) +{ + int *obj = (state == 1 ? &state : 0); + return (obj == &state); +}