[PATCH v3] Caller instrumentation with -finstrument-calls

2013-09-17 Thread Paul Woegerer
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-09-17 Thread Paul Woegerer
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