From 4f6f9d05dfa21ebdff3ef1872cac2ba078123541 Mon Sep 17 00:00:00 2001 From: ak Date: Tue, 16 Sep 2014 03:22:41 +0000 Subject: [PATCH] Always set DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT correctly When profiling is disabled force DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT for each function to one. This information is then preserved through LTO. With this patch for LTO builds -pg needs to be set on both the LTO final link and the original source build, to allow -pg (or -pg -fentry) to be active for that source file. This allows to build large projects mostly with -pg, except for a few files, and still use LTO. gcc/: 2014-09-15 Andi Kleen * function.c (allocate_struct_function): Force DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT to one when profiling is disabled. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@215284 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/function.c | 3 +++ 2 files changed, 9 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 94f2d9cbf5c..8d4f5ba1c37 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2014-09-15 Andi Kleen + + * function.c (allocate_struct_function): Force + DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT to one when + profiling is disabled. + 2014-09-15 Trevor Saunders * cfgrtl.c, combine.c, config/arc/arc.c, config/mcore/mcore.c, diff --git a/gcc/function.c b/gcc/function.c index 26d25b9b4bf..ac50f4af41a 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -4555,6 +4555,9 @@ allocate_struct_function (tree fndecl, bool abstract_p) but is this worth the hassle? */ cfun->can_throw_non_call_exceptions = flag_non_call_exceptions; cfun->can_delete_dead_exceptions = flag_delete_dead_exceptions; + + if (!profile_flag && !flag_instrument_function_entry_exit) + DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT (fndecl) = 1; } } -- 2.11.4.GIT