(expand_expr, case MODIFY_EXPR): Don't preexpand calls if LHS is an
authorRichard Kenner <kenner@gcc.gnu.org>
Fri, 25 Jul 1997 12:36:42 +0000 (08:36 -0400)
committerRichard Kenner <kenner@gcc.gnu.org>
Fri, 25 Jul 1997 12:36:42 +0000 (08:36 -0400)
indirect via a constant pointer.

From-SVN: r14527

gcc/expr.c

index 1cfb4538a2e1cdde452d47a30b31165b997307f5..8db37e0056270296760baa437b83a40f467f36f3 100644 (file)
@@ -6861,7 +6861,9 @@ expand_expr (exp, target, tmode, modifier)
 
        if (TREE_CODE (lhs) != VAR_DECL
            && TREE_CODE (lhs) != RESULT_DECL
-           && TREE_CODE (lhs) != PARM_DECL)
+           && TREE_CODE (lhs) != PARM_DECL
+           && ! (TREE_CODE (lhs) == INDIRECT_REF
+                 && TYPE_READONLY (TREE_TYPE (TREE_OPERAND (lhs, 0)))))
          preexpand_calls (exp);
 
        /* Check for |= or &= of a bitfield of size one into another bitfield