mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-19 08:43:26 +08:00
re PR tree-optimization/48734 (ICE in eliminate_redundant_comparison, at tree-ssa-reassoc.c:1321)
PR tree-optimization/48734 * tree-ssa-reassoc.c (eliminate_redundant_comparison): Give up if return value from maybe_fold_*_comparsions isn't something the code is prepared to handle. * gcc.c-torture/compile/pr48734.c: New test. From-SVN: r172967
This commit is contained in:
parent
ac6fdeacaf
commit
2c9da85bf0
@ -1,3 +1,10 @@
|
||||
2011-04-26 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR tree-optimization/48734
|
||||
* tree-ssa-reassoc.c (eliminate_redundant_comparison): Give up
|
||||
if return value from maybe_fold_*_comparsions isn't something
|
||||
the code is prepared to handle.
|
||||
|
||||
2011-04-26 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
* config/i386/predicates.md (ext_QIreg_operand): Remove extra
|
||||
|
@ -1,5 +1,8 @@
|
||||
2011-04-26 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR tree-optimization/48734
|
||||
* gcc.c-torture/compile/pr48734.c: New test.
|
||||
|
||||
PR testsuite/48753
|
||||
* gcc.dg/tree-prof/val-prof-2.c: Adjust for 32-bit HWI.
|
||||
|
||||
|
11
gcc/testsuite/gcc.c-torture/compile/pr48734.c
Normal file
11
gcc/testsuite/gcc.c-torture/compile/pr48734.c
Normal file
@ -0,0 +1,11 @@
|
||||
/* PR tree-optimization/48734 */
|
||||
|
||||
unsigned int
|
||||
foo (int x, unsigned int y, unsigned int z)
|
||||
{
|
||||
z &= (x == -__INT_MAX__ - 1 ? x : -x) > y;
|
||||
z &= (x == -__INT_MAX__ - 1 ? x : -x) > y;
|
||||
z &= (x == -__INT_MAX__ - 1 ? x : -x) > y;
|
||||
z &= (x == -__INT_MAX__ - 1 ? x : -x) > y;
|
||||
return z;
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
/* Reassociation for trees.
|
||||
Copyright (C) 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
|
||||
Copyright (C) 2005, 2007, 2008, 2009, 2010, 2011
|
||||
Free Software Foundation, Inc.
|
||||
Contributed by Daniel Berlin <dan@dberlin.org>
|
||||
|
||||
This file is part of GCC.
|
||||
@ -1279,6 +1280,20 @@ eliminate_redundant_comparison (enum tree_code opcode,
|
||||
if (!useless_type_conversion_p (TREE_TYPE (curr->op), TREE_TYPE (t)))
|
||||
t = fold_convert (TREE_TYPE (curr->op), t);
|
||||
|
||||
if (TREE_CODE (t) != INTEGER_CST
|
||||
&& !operand_equal_p (t, curr->op, 0))
|
||||
{
|
||||
enum tree_code subcode;
|
||||
tree newop1, newop2;
|
||||
if (!COMPARISON_CLASS_P (t))
|
||||
continue;
|
||||
extract_ops_from_tree (t, &subcode, &newop1, &newop2);
|
||||
STRIP_USELESS_TYPE_CONVERSION (newop1);
|
||||
STRIP_USELESS_TYPE_CONVERSION (newop2);
|
||||
if (!is_gimple_val (newop1) || !is_gimple_val (newop2))
|
||||
continue;
|
||||
}
|
||||
|
||||
if (dump_file && (dump_flags & TDF_DETAILS))
|
||||
{
|
||||
fprintf (dump_file, "Equivalence: ");
|
||||
|
Loading…
x
Reference in New Issue
Block a user