re PR tree-optimization/24365 (statement makes a memory store with complex)
authorJason Merrill <jason@redhat.com>
Sun, 12 Feb 2006 08:01:04 +0000 (03:01 -0500)
committerJason Merrill <jason@gcc.gnu.org>
Sun, 12 Feb 2006 08:01:04 +0000 (03:01 -0500)
        PR tree-opt/24365
        * tree-inline.c (declare_return_variable): Just don't use the
        modify target if it's a gimple complex reg and the return slot
        isn't.

From-SVN: r110888

gcc/ChangeLog
gcc/tree-inline.c

index b6bd762e41d19063f4b9fe5d2b930ca244bb028b..095c6d601c264d90ca24e2d8d41f96de089f727d 100644 (file)
@@ -1,3 +1,10 @@
+2006-02-11  Jason Merrill  <jason@redhat.com>
+
+       PR tree-opt/24365
+       * tree-inline.c (declare_return_variable): Just don't use the
+       modify target if it's a gimple complex reg and the return slot
+       isn't.
+
 2006-02-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
        * doc/contrib.texi: Update my entry.
index 81682c82ec25e729143de2b7de77bec3986287f4..8d258ffd0c5a6d30f8d1820aed4f774f495ed01a 100644 (file)
@@ -1222,9 +1222,10 @@ declare_return_variable (copy_body_data *id, tree return_slot_addr,
            use_it = false;
          else if (is_global_var (base_m))
            use_it = false;
-         else if (TREE_CODE (TREE_TYPE (base_m)) == COMPLEX_TYPE
-                  && !DECL_COMPLEX_GIMPLE_REG_P (result))
-           DECL_COMPLEX_GIMPLE_REG_P (base_m) = 0;
+         else if (TREE_CODE (TREE_TYPE (result)) == COMPLEX_TYPE
+                  && !DECL_COMPLEX_GIMPLE_REG_P (result)
+                  && DECL_COMPLEX_GIMPLE_REG_P (base_m))
+           use_it = false;
          else if (!TREE_ADDRESSABLE (base_m))
            use_it = true;
        }