diff options
author | Bernd Schmidt <bernds@codesourcery.com> | 2014-11-05 12:14:36 +0000 |
---|---|---|
committer | Bernd Schmidt <bernds@gcc.gnu.org> | 2014-11-05 12:14:36 +0000 |
commit | e0d14c396aaa626e054284cf96a250c7aaf907e4 (patch) | |
tree | 6ae355ca6def23b0f0cf6593b092c139fcd2f95a /gcc/function.c | |
parent | a50fa76a9d8e3690ea563ff75d8d9cebb07208f7 (diff) | |
download | gcc-e0d14c396aaa626e054284cf96a250c7aaf907e4.zip gcc-e0d14c396aaa626e054284cf96a250c7aaf907e4.tar.gz gcc-e0d14c396aaa626e054284cf96a250c7aaf907e4.tar.bz2 |
Allow a target to skip an unnecssary register return value for a struct return.
* target.def (omit_struct_return_reg): New data hook.
* doc/tm.texi.in: Add @hook TARGET_OMIT_STRUCT_RETURN_REG.
* doc/tm.texi: Regenerate.
* function.c (expand_function_end): Use it.
From-SVN: r217123
Diffstat (limited to 'gcc/function.c')
-rw-r--r-- | gcc/function.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/function.c b/gcc/function.c index 6d09982..91e3b2c 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -5177,8 +5177,8 @@ expand_function_end (void) If returning a structure PCC style, the caller also depends on this value. And cfun->returns_pcc_struct is not necessarily set. */ - if (cfun->returns_struct - || cfun->returns_pcc_struct) + if ((cfun->returns_struct || cfun->returns_pcc_struct) + && !targetm.calls.omit_struct_return_reg) { rtx value_address = DECL_RTL (DECL_RESULT (current_function_decl)); tree type = TREE_TYPE (DECL_RESULT (current_function_decl)); |