Commit 548e34cd by Richard Guenther Committed by Richard Biener

re PR middle-end/21858 (ICE in compare_values, at tree-vrp.c:301)

2005-06-03  Richard Guenther  <rguenth@gcc.gnu.org>

	PR middle-end/21858
	* fold-const.c (fold_binary): Fix type mismatches in folding
	of comparisons.

	* gcc.dg/pr21858.c: New testcase.

From-SVN: r100539
parent ff5c4582
2005-06-03 Richard Guenther <rguenth@gcc.gnu.org>
PR middle-end/21858
* fold-const.c (fold_binary): Fix type mismatches in folding
of comparisons.
2005-06-03 Kazu Hirata <kazu@codesourcery.com> 2005-06-03 Kazu Hirata <kazu@codesourcery.com>
* cgraph.c, cgraphunit.c, config/mips/mips.c: Fix comment * cgraph.c, cgraphunit.c, config/mips/mips.c: Fix comment
......
...@@ -9303,12 +9303,16 @@ fold_binary (enum tree_code code, tree type, tree op0, tree op1) ...@@ -9303,12 +9303,16 @@ fold_binary (enum tree_code code, tree type, tree op0, tree op1)
switch (code) switch (code)
{ {
case GE_EXPR: case GE_EXPR:
arg1 = const_binop (MINUS_EXPR, arg1, integer_one_node, 0); arg1 = const_binop (MINUS_EXPR, arg1,
return fold_build2 (GT_EXPR, type, arg0, arg1); build_int_cst (TREE_TYPE (arg1), 1), 0);
return fold_build2 (GT_EXPR, type, arg0,
fold_convert (TREE_TYPE (arg0), arg1));
case LT_EXPR: case LT_EXPR:
arg1 = const_binop (MINUS_EXPR, arg1, integer_one_node, 0); arg1 = const_binop (MINUS_EXPR, arg1,
return fold_build2 (LE_EXPR, type, arg0, arg1); build_int_cst (TREE_TYPE (arg1), 1), 0);
return fold_build2 (LE_EXPR, type, arg0,
fold_convert (TREE_TYPE (arg0), arg1));
default: default:
break; break;
......
2005-06-03 Richard Guenther <rguenth@gcc.gnu.org>
PR middle-end/21858
* gcc.dg/pr21858.c: New testcase.
2005-06-03 Paolo Bonzini <bonzini@gnu.org> 2005-06-03 Paolo Bonzini <bonzini@gnu.org>
PR tree-optimization/21292 PR tree-optimization/21292
......
/* Fold used to create a GT_EXPR of pointer vs. integer types,
which caused us to ICE in VRP. */
/* { dg-do compile } */
/* { dg-options "-Os -w" } */
unsigned int dsdblm_GetBlockAddress();
void error_LocalAssert(void);
int dsdblm_CreateBlock(unsigned int address)
{
address = dsdblm_GetBlockAddress();
if (address >= (void*)0x00020000)
error_LocalAssert();
return address;
}
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