OSDN Git Service

* fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
authorsayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 19 Jan 2007 00:30:47 +0000 (00:30 +0000)
committersayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 19 Jan 2007 00:30:47 +0000 (00:30 +0000)
VIEW_CONVERT_EXPR to the same type as it's operand.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@120945 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/fold-const.c

index 99a5870..c2e1f70 100644 (file)
@@ -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
index 2ae560f..5588c37 100644 (file)
@@ -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);