OSDN Git Service

(function_cannot_inline_p): Reject function with
authorwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 24 Dec 1996 00:38:22 +0000 (00:38 +0000)
committerwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 24 Dec 1996 00:38:22 +0000 (00:38 +0000)
PARALLEL result.
(expand_inline_function): Abort if function result not handled.

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

gcc/integrate.c

index e53bca6..c4b8cac 100644 (file)
@@ -91,6 +91,7 @@ function_cannot_inline_p (fndecl)
   int max_insns = INTEGRATE_THRESHOLD (fndecl);
   register int ninsns = 0;
   register tree parms;
+  rtx result;
 
   /* No inlines with varargs.  `grokdeclarator' gives a warning
      message about that if `inline' is specified.  This code
@@ -184,6 +185,11 @@ function_cannot_inline_p (fndecl)
        return "function with complex parameters cannot be inline";
     }
 
+  /* We can't inline functions that return a PARALLEL rtx.  */
+  result = DECL_RTL (DECL_RESULT (fndecl));
+  if (result && GET_CODE (result) == PARALLEL)
+    return "inline functions not supported for this return value type";
+
   return 0;
 }
 \f
@@ -1698,6 +1704,8 @@ expand_inline_function (fndecl, parms, target, ignore, type,
       else
        map->reg_map[REGNO (loc)] = reg_to_map;
     }
+  else
+    abort ();
 
   /* Make new label equivalences for the labels in the called function.  */
   for (i = min_labelno; i < max_labelno; i++)