OSDN Git Service

* calls.c (calls_function_1, expand_call): Only test
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 16 Aug 2000 11:59:03 +0000 (11:59 +0000)
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 16 Aug 2000 11:59:03 +0000 (11:59 +0000)
TYPE_RETURNS_STACK_DEPRESSED for FUNCTION_TYPE.
* function.c (thread_prologue_and_epilogue_insns): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@35743 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/calls.c
gcc/function.c

index 0a319c6..6aa5df5 100644 (file)
@@ -1,3 +1,9 @@
+Wed Aug 16 08:10:32 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
+
+       * calls.c (calls_function_1, expand_call): Only test
+       TYPE_RETURNS_STACK_DEPRESSED for FUNCTION_TYPE.
+       * function.c (thread_prologue_and_epilogue_insns): Likewise.
+
 2000-08-16  Richard Henderson  <rth@cygnus.com>
 
        * combine.c (simplify_shift_const): Revert previous two
index cd4fed7..2d0d52c 100644 (file)
@@ -281,8 +281,10 @@ calls_function_1 (exp, which)
     case CALL_EXPR:
       if (which == 0)
        return 1;
-      else if (TYPE_RETURNS_STACK_DEPRESSED
-              (TREE_TYPE (TREE_TYPE (TREE_OPERAND (exp, 0)))))
+      else if ((TREE_CODE (TREE_TYPE (TREE_TYPE (TREE_OPERAND (exp, 0))))
+               == FUNCTION_TYPE)
+              && (TYPE_RETURNS_STACK_DEPRESSED
+                  (TREE_TYPE (TREE_TYPE (TREE_OPERAND (exp, 0))))))
        return 1;
       else if (TREE_CODE (TREE_OPERAND (exp, 0)) == ADDR_EXPR
               && (TREE_CODE (TREE_OPERAND (TREE_OPERAND (exp, 0), 0))
@@ -2195,7 +2197,8 @@ expand_call (exp, target, ignore)
     flags |= flags_from_decl_or_type (TREE_TYPE (TREE_TYPE (p)));
 
   /* Mark if the function returns with the stack pointer depressed.  */
-  if (TYPE_RETURNS_STACK_DEPRESSED (TREE_TYPE (TREE_TYPE (p))))
+  if (TREE_CODE (TREE_TYPE (TREE_TYPE (p))) == FUNCTION_TYPE
+      && TYPE_RETURNS_STACK_DEPRESSED (TREE_TYPE (TREE_TYPE (p))))
     {
       flags |= ECF_SP_DEPRESSED;
       flags &= ~ (ECF_PURE | ECF_CONST);
index 975ecdd..7601c94 100644 (file)
@@ -7058,7 +7058,8 @@ thread_prologue_and_epilogue_insns (f)
 
       /* If this function returns with the stack depressed, massage
         the epilogue to actually do that.  */
-      if (TYPE_RETURNS_STACK_DEPRESSED (TREE_TYPE (current_function_decl)))
+      if (TREE_CODE (TREE_TYPE (current_function_decl)) == FUNCTION_TYPE
+         && TYPE_RETURNS_STACK_DEPRESSED (TREE_TYPE (current_function_decl)))
        keep_stack_depressed (seq);
 
       emit_jump_insn (seq);