* function.c (gen_mem_addressof): Handle case where DECL is SAVE_EXPR.
authorRichard Kenner <kenner@vlsi1.ultra.nyu.edu>
Fri, 15 Jun 2001 22:08:42 +0000 (22:08 +0000)
committerRichard Kenner <kenner@gcc.gnu.org>
Fri, 15 Jun 2001 22:08:42 +0000 (18:08 -0400)
From-SVN: r43408

gcc/ChangeLog
gcc/function.c

index 639c3fa3d9e0c8140d1189a966de529928a6fc1d..b0704674fa5fdc30d4a92bc3c0b8b0bf6bf4d8e9 100644 (file)
@@ -1,5 +1,7 @@
 Fri Jun 15 18:05:22 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
 
+       * function.c (gen_mem_addressof): Handle case where DECL is SAVE_EXPR.
+
        * explow.c (expr_size): If DECL and size specified, use it.
 
 2001-06-15  Zack Weinberg  <zackw@stanford.edu>
index cdfe697b784b2851403d2b22c9d921851f839e46..2e493f32efdc01dd45e30d9866fa3c81e66b6ff9 100644 (file)
@@ -2873,8 +2873,11 @@ gen_mem_addressof (reg, decl)
   if (decl)
     {
       tree type = TREE_TYPE (decl);
+      enum machine_mode decl_mode
+       = (TREE_CODE (decl) == SAVE_EXPR ? TYPE_MODE (TREE_TYPE (decl))
+          : DECL_MODE (decl));
 
-      PUT_MODE (reg, DECL_MODE (decl));
+      PUT_MODE (reg, decl_mode);
       MEM_VOLATILE_P (reg) = TREE_SIDE_EFFECTS (decl);
       MEM_SET_IN_STRUCT_P (reg, AGGREGATE_TYPE_P (type));
       MEM_ALIAS_SET (reg) = get_alias_set (decl);