aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2001-06-08 14:26:51 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2001-06-08 12:26:51 +0000
commit9c65bbf460d325bf794a610e16ae941f723e3fef (patch)
treec2ee3d50f9715814d7fde13ffec18df50f6dd6f4 /gcc
parentcf7ec0ab009db4a5cda12d0756427bd6d292e377 (diff)
downloadgcc-9c65bbf460d325bf794a610e16ae941f723e3fef.zip
gcc-9c65bbf460d325bf794a610e16ae941f723e3fef.tar.gz
gcc-9c65bbf460d325bf794a610e16ae941f723e3fef.tar.bz2
function.c (clobber_return_register): Clobber the pseudo return register too.
* function.c (clobber_return_register): Clobber the pseudo return register too. From-SVN: r43011
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog3
-rw-r--r--gcc/function.c11
2 files changed, 14 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 05be51c..016586b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,8 @@
Fri Jun 8 14:16:33 CEST 2001 Jan Hubicka <jh@suse.cz>
+ * function.c (clobber_return_register): Clobber the pseudo return
+ register too.
+
* sibcall.c (skip_unreturned_value): New function.
(call_ends_block_p): Use it.
diff --git a/gcc/function.c b/gcc/function.c
index 64df1bd..cef6697 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -6601,6 +6601,17 @@ void
clobber_return_register ()
{
diddle_return_value (do_clobber_return_reg, NULL);
+
+ /* In case we do use pseudo to return value, clobber it too. */
+ if (DECL_RTL_SET_P (DECL_RESULT (current_function_decl)))
+ {
+ tree decl_result = DECL_RESULT (current_function_decl);
+ rtx decl_rtl = DECL_RTL (decl_result);
+ if (REG_P (decl_rtl) && REGNO (decl_rtl) >= FIRST_PSEUDO_REGISTER)
+ {
+ do_clobber_return_reg (decl_rtl, NULL);
+ }
+ }
}
static void