]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
reg-stack.c (stack_result): Aggregates are not returned in stack registers.
authorJeffrey A Law <law@cygnus.com>
Tue, 19 Oct 1999 08:05:40 +0000 (08:05 +0000)
committerJeff Law <law@gcc.gnu.org>
Tue, 19 Oct 1999 08:05:40 +0000 (02:05 -0600)
        * reg-stack.c (stack_result): Aggregates are not returned in
        stack registers.

From-SVN: r30079

gcc/ChangeLog
gcc/reg-stack.c

index 3bddf0d4bdbf427c4ff8c2dc746c15e787ebaa9e..59c2ada88ae6e8bdddd04377dda00802b0eb6ed8 100644 (file)
@@ -1,3 +1,8 @@
+Tue Oct 19 02:03:00 1999  Jeffrey A Law  (law@cygnus.com)
+
+       * reg-stack.c (stack_result): Aggregates are not returned in
+       stack registers.
+
 Mon Oct 18 01:41:35 1999  Jeffrey A Law  (law@cygnus.com)
 
        * combine.c (get_last_value): If the last set of a register
index dd4a87e697cdada17e85db0b62aa2d80c6fe0b4a..42caefa0a42bb82d3ebed3a6006c309ae5ed741e 100644 (file)
@@ -1186,8 +1186,16 @@ static rtx
 stack_result (decl)
      tree decl;
 {
-  rtx result = DECL_RTL (DECL_RESULT (decl));
+  rtx result;
 
+  /* If the value is supposed to be returned in memory, then clearly
+     it is not returned in a stack register.  */
+  if (aggregate_value_p (DECL_RESULT (decl)))
+    return 0;
+
+  result = DECL_RTL (DECL_RESULT (decl));
+  /* ?!?  What is this code supposed to do?  Can this code actually
+     trigger if we kick out aggregates above?  */
   if (result != 0
       && ! (GET_CODE (result) == REG
            && REGNO (result) < FIRST_PSEUDO_REGISTER))