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
This commit is contained in:
parent
8ab1d2e90f
commit
8b5546d674
|
@ -1,3 +1,11 @@
|
|||
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
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* 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
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
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.
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
/* 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;
|
||||
}
|
Loading…
Reference in New Issue