aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJeff Law <law@gcc.gnu.org>1994-11-28 22:44:47 -0700
committerJeff Law <law@gcc.gnu.org>1994-11-28 22:44:47 -0700
commit203436d9aa8c88b05d173c0584a3f51c83a6f7b6 (patch)
tree9c9284cd5e56156fc564cf85babde8785e2f8bcd /gcc
parentaaf87c453b384b20e54af789db76ce14021dbfdd (diff)
downloadgcc-203436d9aa8c88b05d173c0584a3f51c83a6f7b6.zip
gcc-203436d9aa8c88b05d173c0584a3f51c83a6f7b6.tar.gz
gcc-203436d9aa8c88b05d173c0584a3f51c83a6f7b6.tar.bz2
integrate.c (function_cannot_inline_p): Do not inline functions which return a BLKmode value in registers.
* integrate.c (function_cannot_inline_p): Do not inline functions which return a BLKmode value in registers. From-SVN: r8576
Diffstat (limited to 'gcc')
-rw-r--r--gcc/integrate.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/integrate.c b/gcc/integrate.c
index 2355508..6af0cf6 100644
--- a/gcc/integrate.c
+++ b/gcc/integrate.c
@@ -130,6 +130,11 @@ function_cannot_inline_p (fndecl)
if (current_function_returns_pcc_struct)
return "inline functions not supported for this return value type";
+ /* We can't inline functions that return BLKmode structures in registers. */
+ if (TYPE_MODE (TREE_TYPE (TREE_TYPE (fndecl))) == BLKmode
+ && ! aggregate_value_p (TREE_TYPE (TREE_TYPE (fndecl))))
+ return "inline functions not supported for this return value type";
+
/* We can't inline functions that return structures of varying size. */
if (int_size_in_bytes (TREE_TYPE (TREE_TYPE (fndecl))) < 0)
return "function with varying-size return value cannot be inline";