aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1996-12-23 16:38:22 -0800
committerJim Wilson <wilson@gcc.gnu.org>1996-12-23 16:38:22 -0800
commit64ed0f40d3b4dbeaaa00318808ef93e9701a6ebd (patch)
tree4a0810f01d11cc373505e32501b38cdf59952419
parent141719a8d7441a64d057e5095e7c96c19cf2aa7e (diff)
downloadgcc-64ed0f40d3b4dbeaaa00318808ef93e9701a6ebd.zip
gcc-64ed0f40d3b4dbeaaa00318808ef93e9701a6ebd.tar.gz
gcc-64ed0f40d3b4dbeaaa00318808ef93e9701a6ebd.tar.bz2
(function_cannot_inline_p): Reject function with PARALLEL result.
(function_cannot_inline_p): Reject function with PARALLEL result. (expand_inline_function): Abort if function result not handled. From-SVN: r13340
-rw-r--r--gcc/integrate.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/integrate.c b/gcc/integrate.c
index e53bca6..c4b8cac 100644
--- a/gcc/integrate.c
+++ b/gcc/integrate.c
@@ -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;
}
@@ -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++)