[PATCH v3] Caller instrumentation with -finstrument-calls
Hello Jan, the MAINTAINERS file reveals that you are the right person to contact for profile feedback related changes. This is the third iteration of the caller instrumentation patch originally posted and explained here: http://gcc.gnu.org/ml/gcc-patches/2013-06/msg01593.html The hooks now conform to the naming scheme suggested by Andrew Pinski and the extra bitfield for the no_instrument_calls func attribute is now relocated to tree_decl_with_vis (it was in tree_function_decl before, but there is no room left there for another bitfield). It would be great if this patch could make it into GCC 4.9.0. Thanks, Paul Paul Woegerer (1): Caller instrumentation with -finstrument-calls. gcc/builtins.def| 5 ++ gcc/c-family/c-common.c | 34 +++ gcc/c/c-decl.c | 2 + gcc/common.opt | 20 - gcc/cp/decl.c | 2 + gcc/doc/invoke.texi | 42 + gcc/function.c | 3 +- gcc/gimplify.c | 113 +++- gcc/ipa.c | 1 + gcc/java/jcf-parse.c| 1 + gcc/libfuncs.h | 6 ++ gcc/optabs.c| 6 ++ gcc/opts.c | 10 +++ gcc/testsuite/g++.dg/other/instrument_calls-1.C | 14 +++ gcc/testsuite/g++.dg/other/instrument_calls-2.C | 20 + gcc/testsuite/g++.dg/other/instrument_calls-3.C | 17 gcc/testsuite/gcc.dg/instrument_calls-1.c | 8 ++ gcc/testsuite/gcc.dg/instrument_calls-2.c | 8 ++ gcc/testsuite/gcc.dg/instrument_calls-3.c | 8 ++ gcc/testsuite/gcc.dg/instrument_calls-4.c | 8 ++ gcc/testsuite/gcc.dg/instrument_calls-5.c | 11 +++ gcc/testsuite/gcc.dg/instrument_calls-6.c | 11 +++ gcc/testsuite/gcc.dg/instrument_calls-7.c | 13 +++ gcc/testsuite/gcc.dg/instrument_calls-8.c | 7 ++ gcc/testsuite/gcc.dg/instrument_calls-9.c | 12 +++ gcc/tree-core.h | 4 +- gcc/tree-streamer-in.c | 2 + gcc/tree-streamer-out.c | 1 + gcc/tree.h | 6 ++ 29 files changed, 390 insertions(+), 5 deletions(-) create mode 100644 gcc/testsuite/g++.dg/other/instrument_calls-1.C create mode 100644 gcc/testsuite/g++.dg/other/instrument_calls-2.C create mode 100644 gcc/testsuite/g++.dg/other/instrument_calls-3.C create mode 100644 gcc/testsuite/gcc.dg/instrument_calls-1.c create mode 100644 gcc/testsuite/gcc.dg/instrument_calls-2.c create mode 100644 gcc/testsuite/gcc.dg/instrument_calls-3.c create mode 100644 gcc/testsuite/gcc.dg/instrument_calls-4.c create mode 100644 gcc/testsuite/gcc.dg/instrument_calls-5.c create mode 100644 gcc/testsuite/gcc.dg/instrument_calls-6.c create mode 100644 gcc/testsuite/gcc.dg/instrument_calls-7.c create mode 100644 gcc/testsuite/gcc.dg/instrument_calls-8.c create mode 100644 gcc/testsuite/gcc.dg/instrument_calls-9.c -- 1.8.4
[PATCH] Caller instrumentation with -finstrument-calls.
2013-07-01 Paul Woegerer paul_woege...@mentor.com Caller instrumentation with -finstrument-calls. * gcc/builtins.def: Add call-hooks __gnu_profile_call_before and __gnu_profile_call_after. * gcc/libfuncs.h (enum libfunc_index): Likewise. * gcc/optabs.c (init_optabs): Likewise. * gcc/c-family/c-common.c (no_instrument_calls): Add attribute. (handle_no_instrument_calls_attribute): New. * gcc/common.opt (finstrument-calls): New option. (finstrument-calls-exclude-function-list): Likewise. (finstrument-calls-exclude-file-list): Likewise. * gcc/opts.c (common_handle_option): Handle new options. * gcc/tree-core.h (tree_decl_with_vis): Add bitfield no_instrument_calls_before_after. * gcc/tree.h: Macro for no_instrument_calls_before_after access. * gcc/c/c-decl.c (merge_decls): Handle tree_function_decl field. * gcc/cp/decl.c (duplicate_decls): Likewise. * gcc/function.c (expand_function_start): Likewise. * gcc/ipa.c: Likewise. * gcc/java/jcf-parse.c: Likewise. * gcc/tree-streamer-in.c: Likewise. * gcc/tree-streamer-out.c: Likewise. (finstrument-calls-exclude-function-list): Likewise. (finstrument-calls-exclude-file-list): Likewise. * gcc/gimplify.c (flag_instrument_calls_exclude_p): New. (addr_expr_for_call_instrumentation): New. (maybe_add_profile_call): New. (gimplify_call_expr): Add call-hooks insertion. (gimplify_modify_expr): Likewise. * gcc/doc/invoke.texi: Added documentation for -finstrument-calls-exclude-function-list and -finstrument-calls-exclude-file-list and -finstrument-calls. * gcc/testsuite/g++.dg/other/instrument_calls-1.C Added regression test for -finstrument-calls. * gcc/testsuite/g++.dg/other/instrument_calls-2.C: Likewise. * gcc/testsuite/g++.dg/other/instrument_calls-3.C: Likewise. * gcc/testsuite/gcc.dg/instrument_calls-1.c: Likewise. * gcc/testsuite/gcc.dg/instrument_calls-2.c: Likewise. * gcc/testsuite/gcc.dg/instrument_calls-3.c: Likewise. * gcc/testsuite/gcc.dg/instrument_calls-4.c: Likewise. * gcc/testsuite/gcc.dg/instrument_calls-5.c: Likewise. * gcc/testsuite/gcc.dg/instrument_calls-6.c: Likewise. * gcc/testsuite/gcc.dg/instrument_calls-7.c: Likewise. * gcc/testsuite/gcc.dg/instrument_calls-8.c: Likewise. * gcc/testsuite/gcc.dg/instrument_calls-9.c: Likewise. Signed-off-by: Paul Woegerer paul_woege...@mentor.com --- gcc/builtins.def| 5 ++ gcc/c-family/c-common.c | 34 +++ gcc/c/c-decl.c | 2 + gcc/common.opt | 20 - gcc/cp/decl.c | 2 + gcc/doc/invoke.texi | 42 + gcc/function.c | 3 +- gcc/gimplify.c | 113 +++- gcc/ipa.c | 1 + gcc/java/jcf-parse.c| 1 + gcc/libfuncs.h | 6 ++ gcc/optabs.c| 6 ++ gcc/opts.c | 10 +++ gcc/testsuite/g++.dg/other/instrument_calls-1.C | 14 +++ gcc/testsuite/g++.dg/other/instrument_calls-2.C | 20 + gcc/testsuite/g++.dg/other/instrument_calls-3.C | 17 gcc/testsuite/gcc.dg/instrument_calls-1.c | 8 ++ gcc/testsuite/gcc.dg/instrument_calls-2.c | 8 ++ gcc/testsuite/gcc.dg/instrument_calls-3.c | 8 ++ gcc/testsuite/gcc.dg/instrument_calls-4.c | 8 ++ gcc/testsuite/gcc.dg/instrument_calls-5.c | 11 +++ gcc/testsuite/gcc.dg/instrument_calls-6.c | 11 +++ gcc/testsuite/gcc.dg/instrument_calls-7.c | 13 +++ gcc/testsuite/gcc.dg/instrument_calls-8.c | 7 ++ gcc/testsuite/gcc.dg/instrument_calls-9.c | 12 +++ gcc/tree-core.h | 4 +- gcc/tree-streamer-in.c | 2 + gcc/tree-streamer-out.c | 1 + gcc/tree.h | 6 ++ 29 files changed, 390 insertions(+), 5 deletions(-) create mode 100644 gcc/testsuite/g++.dg/other/instrument_calls-1.C create mode 100644 gcc/testsuite/g++.dg/other/instrument_calls-2.C create mode 100644 gcc/testsuite/g++.dg/other/instrument_calls-3.C create mode 100644 gcc/testsuite/gcc.dg/instrument_calls-1.c create mode 100644 gcc/testsuite/gcc.dg/instrument_calls-2.c create mode 100644 gcc/testsuite/gcc.dg/instrument_calls-3.c create mode 100644 gcc/testsuite/gcc.dg/instrument_calls-4.c create mode 100644 gcc/testsuite/gcc.dg/instrument_calls-5.c create mode 100644 gcc/testsuite/gcc.dg/instrument_calls-6.c