Commit 8b5546d6 by Jakub Jelinek Committed by Jakub Jelinek

re PR middle-end/55832 (ICE in fold_convert_loc, at fold-const.c:1967)

	PR tree-optimization/55832
	* fold-const.c (fold_binary_loc): For ABS_EXPR<x> >= 0 and
	ABS_EXPR<x> < 0 folding use constant_boolean_node instead of
	integer_{one,zero}_node.

	* gcc.c-torture/compile/pr55832.c: New test.

Co-Authored-By: Marc Glisse <marc.glisse@inria.fr>

From-SVN: r194836
parent 8ab1d2e9
2013-01-03 Jakub Jelinek <jakub@redhat.com>
Marc Glisse <marc.glisse@inria.fr>
PR tree-optimization/55832
* fold-const.c (fold_binary_loc): For ABS_EXPR<x> >= 0 and
ABS_EXPR<x> < 0 folding use constant_boolean_node instead of
integer_{one,zero}_node.
2013-01-03 Jakub Jelinek <jakub@redhat.com>
PR debug/54402
* params.def (PARAM_MAX_VARTRACK_REVERSE_OP_SIZE): New param.
/* Fold a constant sub-tree into a single node for C-compiler
Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011,
2012 Free Software Foundation, Inc.
2012, 2013 Free Software Foundation, Inc.
This file is part of GCC.
......@@ -13519,7 +13519,9 @@ fold_binary_loc (location_t loc,
"when simplifying comparison of "
"absolute value and zero"),
WARN_STRICT_OVERFLOW_CONDITIONAL);
return omit_one_operand_loc (loc, type, integer_one_node, arg0);
return omit_one_operand_loc (loc, type,
constant_boolean_node (true, type),
arg0);
}
/* Convert ABS_EXPR<x> < 0 to false. */
......@@ -13533,7 +13535,9 @@ fold_binary_loc (location_t loc,
"when simplifying comparison of "
"absolute value and zero"),
WARN_STRICT_OVERFLOW_CONDITIONAL);
return omit_one_operand_loc (loc, type, integer_zero_node, arg0);
return omit_one_operand_loc (loc, type,
constant_boolean_node (false, type),
arg0);
}
/* If X is unsigned, convert X < (1 << Y) into X >> Y == 0
......
2013-01-03 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/55832
* gcc.c-torture/compile/pr55832.c: New test.
2013-01-02 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
* gcc.dg/pr55430.c: Define MAP_FAILED if not defined.
......
/* PR tree-optimization/55832 */
int g, b;
void
foo (void)
{
union U { int i; unsigned short s; } a = { 0 };
unsigned char c;
unsigned short d = 0, *p = &a.s;
if (g)
a.i--;
if (b && a.i < (d = 1))
return;
for (; a.i < 15; a.i++)
b |= d <= c;
if (!*p)
g = 0;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment