I am testing the following (obvious) patch to fix PR70747. Richard.
2016-04-21 Richard Biener <rguent...@suse.de> PR middle-end/70747 * fold-const.c (fold_comparison): Return properly typed constant boolean. * gcc.dg/pr70747.c: New testcase. Index: gcc/fold-const.c =================================================================== *** gcc/fold-const.c (revision 235305) --- gcc/fold-const.c (working copy) *************** fold_comparison (location_t loc, enum tr *** 8676,8686 **** case EQ_EXPR: case LE_EXPR: case LT_EXPR: ! return boolean_false_node; case GE_EXPR: case GT_EXPR: case NE_EXPR: ! return boolean_true_node; default: gcc_unreachable (); } --- 8686,8696 ---- case EQ_EXPR: case LE_EXPR: case LT_EXPR: ! return constant_boolean_node (false, type); case GE_EXPR: case GT_EXPR: case NE_EXPR: ! return constant_boolean_node (true, type); default: gcc_unreachable (); } Index: gcc/testsuite/gcc.dg/pr70747.c =================================================================== *** gcc/testsuite/gcc.dg/pr70747.c (revision 0) --- gcc/testsuite/gcc.dg/pr70747.c (working copy) *************** *** 0 **** --- 1,10 ---- + /* { dg-do compile } */ + /* { dg-options "-pedantic" } */ + + int *a, b; + + void fn1 () + { + a = __builtin_malloc (sizeof(int)*2); + b = &a[1] == (0, 0); /* { dg-warning "comparison between pointer and integer" } */ + }