Commit 1630e763 by Alexey Starovoytov Committed by Ian Lance Taylor

re PR middle-end/23522 (fold_widened_comparison bug)

	PR middle-end/23522
	* fold-const.c (fold_widened_comparison): Do not allow range based
	constant folding when right operand cannot be unwidened.

Co-Authored-By: Ian Lance Taylor <ian@airs.com>

From-SVN: r105536
parent 74395677
2005-10-17 Alexey Starovoytov <alexey.starovoytov@sun.com>
Ian Lance Taylor <ian@airs.com>
PR middle-end/23522
* fold-const.c (fold_widened_comparison): Do not allow range based
constant folding when right operand cannot be unwidened.
2005-10-17 Richard Henderson <rth@redhat.com> 2005-10-17 Richard Henderson <rth@redhat.com>
* builtins.c (expand_builtin_synchronize): Build a new-style asm * builtins.c (expand_builtin_synchronize): Build a new-style asm
......
...@@ -6250,8 +6250,6 @@ fold_widened_comparison (enum tree_code code, tree type, tree arg0, tree arg1) ...@@ -6250,8 +6250,6 @@ fold_widened_comparison (enum tree_code code, tree type, tree arg0, tree arg1)
return NULL_TREE; return NULL_TREE;
arg1_unw = get_unwidened (arg1, shorter_type); arg1_unw = get_unwidened (arg1, shorter_type);
if (!arg1_unw)
return NULL_TREE;
/* If possible, express the comparison in the shorter mode. */ /* If possible, express the comparison in the shorter mode. */
if ((code == EQ_EXPR || code == NE_EXPR if ((code == EQ_EXPR || code == NE_EXPR
...@@ -6264,7 +6262,9 @@ fold_widened_comparison (enum tree_code code, tree type, tree arg0, tree arg1) ...@@ -6264,7 +6262,9 @@ fold_widened_comparison (enum tree_code code, tree type, tree arg0, tree arg1)
return fold_build2 (code, type, arg0_unw, return fold_build2 (code, type, arg0_unw,
fold_convert (shorter_type, arg1_unw)); fold_convert (shorter_type, arg1_unw));
if (TREE_CODE (arg1_unw) != INTEGER_CST) if (TREE_CODE (arg1_unw) != INTEGER_CST
|| TREE_CODE (shorter_type) != INTEGER_TYPE
|| !int_fits_type_p (arg1_unw, shorter_type))
return NULL_TREE; return NULL_TREE;
/* If we are comparing with the integer that does not fit into the range /* If we are comparing with the integer that does not fit into the range
......
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