diff options
author | Jim Wilson <wilson@gcc.gnu.org> | 1996-12-23 16:38:22 -0800 |
---|---|---|
committer | Jim Wilson <wilson@gcc.gnu.org> | 1996-12-23 16:38:22 -0800 |
commit | 64ed0f40d3b4dbeaaa00318808ef93e9701a6ebd (patch) | |
tree | 4a0810f01d11cc373505e32501b38cdf59952419 | |
parent | 141719a8d7441a64d057e5095e7c96c19cf2aa7e (diff) | |
download | gcc-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.c | 8 |
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++) |