aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/fold-const.c2
2 files changed, 7 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 99a5870..c2e1f70 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2007-01-18 Roger Sayle <roger@eyesopen.com>
+
+ * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
+ VIEW_CONVERT_EXPR to the same type as it's operand.
+
2007-01-18 David Edelsohn <edelsohn@gnu.org>
* config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
diff --git a/gcc/fold-const.c b/gcc/fold-const.c
index 2ae560f..5588c37 100644
--- a/gcc/fold-const.c
+++ b/gcc/fold-const.c
@@ -7573,6 +7573,8 @@ fold_unary (enum tree_code code, tree type, tree op0)
return tem ? tem : NULL_TREE;
case VIEW_CONVERT_EXPR:
+ if (TREE_TYPE (op0) == type)
+ return op0;
if (TREE_CODE (op0) == VIEW_CONVERT_EXPR)
return fold_build1 (VIEW_CONVERT_EXPR, type, TREE_OPERAND (op0, 0));
return fold_view_convert_expr (type, op0);