fold-const.c (fold_binary): Use build_fold_addr_expr for address calculation and...
authorRichard Guenther <rguenth@gcc.gnu.org>
Wed, 27 Apr 2005 19:39:08 +0000 (19:39 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Wed, 27 Apr 2005 19:39:08 +0000 (19:39 +0000)
2005-04-27  Richard Guenther  <rguenth@gcc.gnu.org>

* fold-const.c (fold_binary): Use build_fold_addr_expr
for address calculation and INDIRECT_REF handling.

From-SVN: r98877

gcc/ChangeLog
gcc/fold-const.c

index af1b5fd..4d31978 100644 (file)
@@ -1,3 +1,8 @@
+2005-04-27  Richard Guenther  <rguenth@gcc.gnu.org>
+
+       * fold-const.c (fold_binary): Use build_fold_addr_expr
+       for address calculation and INDIRECT_REF handling.
+
 2005-04-27  Andrew Haley  <aph@redhat.com>
 
        * postreload-gcse.c (hash_scan_set): Remove bogus assertion.
index 9de988c..9e9243c 100644 (file)
@@ -9723,21 +9723,9 @@ fold_binary (enum tree_code code, tree type, tree op0, tree op1)
            {
              tree op0 = TREE_OPERAND (cref0, 0);
              tree op1 = TREE_OPERAND (cref1, 0);
-             if (TREE_CODE (op0) == INDIRECT_REF)
-               op0 = TREE_OPERAND (op0, 0);
-             else
-               {
-                 tree ptype = build_pointer_type (TREE_TYPE (op0));
-                 op0 = build1 (ADDR_EXPR, ptype, op0);
-               }
-             if (TREE_CODE (op1) == INDIRECT_REF)
-               op1 = TREE_OPERAND (op1, 0);
-             else
-               {
-                 tree ptype = build_pointer_type (TREE_TYPE (op1));
-                 op1 = build1 (ADDR_EXPR, ptype, op1);
-               }
-             return fold_build2 (code, type, op0, op1);
+             return fold_build2 (code, type,
+                                 build_fold_addr_expr (op0),
+                                 build_fold_addr_expr (op1));
            }
        }