aboutsummaryrefslogtreecommitdiff
path: root/gcc/final.c
diff options
context:
space:
mode:
authorAndreas Krebbel <Andreas.Krebbel@de.ibm.com>2014-05-05 07:55:26 +0000
committerAndreas Krebbel <krebbel@gcc.gnu.org>2014-05-05 07:55:26 +0000
commitd56a43a0e09598ec8e4e76817e5cd0f76e564962 (patch)
tree17925abdca6968e0293ace7cac7077c037baa800 /gcc/final.c
parentf668cd6f2be34526a20dcedff00cac876c6760c6 (diff)
downloadgcc-d56a43a0e09598ec8e4e76817e5cd0f76e564962.zip
gcc-d56a43a0e09598ec8e4e76817e5cd0f76e564962.tar.gz
gcc-d56a43a0e09598ec8e4e76817e5cd0f76e564962.tar.bz2
target.def: Add new target hook.
2014-05-05 Andreas Krebbel <Andreas.Krebbel@de.ibm.com> * target.def: Add new target hook. * doc/tm.texi: Regenerate. * targhooks.h (default_keep_leaf_when_profiled): Add prototype. * targhooks.c (default_keep_leaf_when_profiled): New function. * config/s390/s390.c (s390_keep_leaf_when_profiled): New function. (TARGET_KEEP_LEAF_WHEN_PROFILED): Define. 2014-05-05 Andreas Krebbel <Andreas.Krebbel@de.ibm.com> * gcc.target/s390/leaf-profile.c: New testcase. From-SVN: r210061
Diffstat (limited to 'gcc/final.c')
-rw-r--r--gcc/final.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/final.c b/gcc/final.c
index 8c6f6ee..cf649fb 100644
--- a/gcc/final.c
+++ b/gcc/final.c
@@ -4241,7 +4241,9 @@ leaf_function_p (void)
{
rtx insn;
- if (crtl->profile || profile_arc_flag)
+ /* Some back-ends (e.g. s390) want leaf functions to stay leaf
+ functions even if they call mcount. */
+ if (crtl->profile && !targetm.keep_leaf_when_profiled ())
return 0;
for (insn = get_insns (); insn; insn = NEXT_INSN (insn))