aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/fold-const.c5
2 files changed, 11 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 94725d9..a008d0d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2008-03-30 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/31023
+ * fold-const.c (fold_sign_changed_comparison): Do leave
+ conversions to base-types alone.
+
2008-03-29 Andrew Pinski <andrew_pinski@playstation.sony.com>
* config/rs6000/rs6000.c (rs6000_stack_info): Don't force saving of
diff --git a/gcc/fold-const.c b/gcc/fold-const.c
index 5d5d7cf..c420b79 100644
--- a/gcc/fold-const.c
+++ b/gcc/fold-const.c
@@ -6807,6 +6807,11 @@ fold_sign_changed_comparison (enum tree_code code, tree type,
if (TYPE_PRECISION (inner_type) != TYPE_PRECISION (outer_type))
return NULL_TREE;
+ /* If the conversion is from an integral subtype to its basetype
+ leave it alone. */
+ if (TREE_TYPE (inner_type) == outer_type)
+ return NULL_TREE;
+
if (TREE_CODE (arg1) != INTEGER_CST
&& !((TREE_CODE (arg1) == NOP_EXPR
|| TREE_CODE (arg1) == CONVERT_EXPR)