Skip to content
Snippets Groups Projects
  1. Jan 03, 2024
  2. Jan 16, 2023
  3. Jan 03, 2022
  4. Jan 04, 2021
  5. Jun 03, 2020
    • Martin Liska's avatar
      gcov: Fix build on AIX · eb3480fc
      Martin Liska authored
      We must guard used atomic builtins with GCOV_SUPPORTS_ATOMIC.
      The patch is tested on AIX and I'm going to push it.
      
      libgcc/ChangeLog:
      
      	PR gcov-profile/95480
      	* libgcov-profiler.c (GCOV_SUPPORTS_ATOMIC): Move to...
      	* libgcov.h (GCOV_SUPPORTS_ATOMIC): ...here.
      	(gcov_counter_add): Use GCOV_SUPPORTS_ATOMIC guard.
      	(gcov_counter_set_if_null): Likewise.
      eb3480fc
  6. Jun 02, 2020
    • Martin Liska's avatar
      Make TOPN counter dynamically allocated. · 871e5ada
      Martin Liska authored
      gcc/ChangeLog:
      
      	* coverage.c (get_coverage_counts): Skip sanity check for TOP N counters
      	as they have variable number of counters.
      	* gcov-dump.c (main): Add new option -r.
      	(print_usage): Likewise.
      	(tag_counters): All new raw format.
      	* gcov-io.h (struct gcov_kvp): New.
      	(GCOV_TOPN_VALUES): Remove.
      	(GCOV_TOPN_VALUES_COUNTERS): Likewise.
      	(GCOV_TOPN_MEM_COUNTERS): New.
      	(GCOV_TOPN_DISK_COUNTERS): Likewise.
      	(GCOV_TOPN_MAXIMUM_TRACKED_VALUES): Likewise.
      	* ipa-profile.c (ipa_profile_generate_summary): Use
      	GCOV_TOPN_MAXIMUM_TRACKED_VALUES.
      	(ipa_profile_write_edge_summary): Likewise.
      	(ipa_profile_read_edge_summary): Likewise.
      	(ipa_profile): Remove usage of GCOV_TOPN_VALUES.
      	* profile.c (sort_hist_values): Sort variable number
      	of counters.
      	(compute_value_histograms): Special case for TOP N counters
      	that have dynamic number of key-value pairs.
      	* value-prof.c (dump_histogram_value): Dump variable number
      	of key-value pairs.
      	(stream_in_histogram_value): Stream in variable number
      	of key-value pairs for TOP N counter.
      	(get_nth_most_common_value): Deal with variable number
      	of key-value pairs.
      	(dump_ic_profile): Use GCOV_TOPN_MAXIMUM_TRACKED_VALUES
      	for loop iteration.
      	(gimple_find_values_to_profile): Set GCOV_TOPN_MEM_COUNTERS
      	to n_counters.
      	* doc/gcov-dump.texi: Document new -r option.
      
      libgcc/ChangeLog:
      
      	* libgcov-driver.c (prune_topn_counter): Remove.
      	(prune_counters): Likewise.
      	(merge_one_data): Special case TOP N counters
      	as they have variable length.
      	(write_top_counters): New.
      	(write_one_data): Special case TOP N.
      	(dump_one_gcov): Do not prune TOP N counters.
      	* libgcov-merge.c (merge_topn_values_set): Remove.
      	(__gcov_merge_topn): Use gcov_topn_add_value.
      	* libgcov-profiler.c (__gcov_topn_values_profiler_body):
      	Likewise here.
      	* libgcov.h (gcov_counter_add): New.
      	(gcov_counter_set_if_null): Likewise.
      	(gcov_topn_add_value): New.
      871e5ada
  7. Jan 27, 2020
    • Martin Liska's avatar
      Add __gcov_indirect_call_profiler_v4_atomic. · 3ae37f92
      Martin Liska authored
      	PR gcov-profile/93403
      	* tree-profile.c (gimple_init_gcov_profiler): Generate
      	both __gcov_indirect_call_profiler_v4 and
      	__gcov_indirect_call_profiler_v4_atomic.
      	PR gcov-profile/93403
      	* libgcov-profiler.c (__gcov_indirect_call_profiler_v4):
      	Call __gcov_indirect_call_profiler_body.
      	(__gcov_indirect_call_profiler_body): New.
      	(__gcov_indirect_call_profiler_v4_atomic): New.
      	* libgcov.h (__gcov_indirect_call_profiler_v4_atomic):
      	New declaration.
      3ae37f92
  8. Jan 22, 2020
    • Martin Liska's avatar
      Fix TOP N counter update. · 7491c17f
      Martin Liska authored
      	PR tree-optimization/92924
      	* libgcov-profiler.c (__gcov_topn_values_profiler_body): First
      	try to find an existing value, then find an empty slot
      	if not found.
      7491c17f
    • Martin Liska's avatar
      Smart relaxation of TOP N counter. · 5f32f9cf
      Martin Liska authored
      	PR tree-optimization/92924
      	* profile.c (compute_value_histograms): Divide
      	all counter values.
      	PR tree-optimization/92924
      	* libgcov-driver.c (prune_topn_counter): New.
      	(prune_counters): Likewise.
      	(dump_one_gcov): Prune a run-time counter.
      	* libgcov-profiler.c (__gcov_topn_values_profiler_body):
      	For a known value, add GCOV_TOPN_VALUES to value.
      	Otherwise, decrement all counters by one.
      5f32f9cf
  9. Jan 01, 2020
  10. Jul 03, 2019
    • Martin Liska's avatar
      Rename SINGE_VALUE to TOPN_VALUES counters. · 596341c7
      Martin Liska authored
      2019-07-03  Martin Liska  <mliska@suse.cz>
      
      	* gcov-counter.def (GCOV_COUNTER_V_SINGLE): Remove.
      	(GCOV_COUNTER_V_TOPN): New.
      	(GCOV_COUNTER_V_INDIR): Use _topn.
      	* gcov-io.h (GCOV_DISK_SINGLE_VALUES): Remove.
      	(GCOV_TOPN_VALUES): New.
      	(GCOV_SINGLE_VALUE_COUNTERS): Remove.
      	(GCOV_TOPN_VALUES_COUNTERS): New.
      	* profile.c (instrument_values): Use HIST_TYPE_TOPN_VALUES.
      	* tree-profile.c:
      	(gimple_init_gcov_profiler): Rename variables from one_value
      	to topn_values.
      	(gimple_gen_one_value_profiler): Remove.
      	(gimple_gen_topn_values_profiler): New function.
      	* value-prof.c (dump_histogram_value): Use TOPN_VALUES
      	names instead of SINGLE_VALUE.
      	(stream_out_histogram_value): Likewise.
      	(stream_in_histogram_value): Likewise.
      	(get_most_common_single_value): Likewise.
      	(gimple_divmod_fixed_value_transform): Likewise.
      	(gimple_stringops_transform): Likewise.
      	(gimple_divmod_values_to_profile): Likewise.
      	(gimple_stringops_values_to_profile): Likewise.
      	(gimple_find_values_to_profile): Likewise.
      	* value-prof.h (enum hist_type): Rename to TOPN.
      	(gimple_gen_one_value_profiler): Remove.
      	(gimple_gen_topn_values_profiler): New.
      2019-07-03  Martin Liska  <mliska@suse.cz>
      
      	* Makefile.in: Use topn_values instead of one_value names.
      	* libgcov-merge.c (__gcov_merge_single): Move to ...
      	(__gcov_merge_topn): ... this.
      	(merge_single_value_set): Move to ...
      	(merge_topn_values_set): ... this.
      	* libgcov-profiler.c (__gcov_one_value_profiler_body): Move to
      	...
      	(__gcov_topn_values_profiler_body): ... this.
      	(__gcov_one_value_profiler_v2): Move to ...
      	(__gcov_topn_values_profiler): ... this.
      	(__gcov_one_value_profiler_v2_atomic): Move to ...
      	(__gcov_topn_values_profiler_atomic): ... this.
      	(__gcov_indirect_call_profiler_v4): Remove.
      	* libgcov-util.c (__gcov_single_counter_op): Move to ...
      	(__gcov_topn_counter_op): ... this.
      	* libgcov.h (L_gcov_merge_single): Remove.
      	(L_gcov_merge_topn): New.
      	(__gcov_merge_single): Remove.
      	(__gcov_merge_topn): New.
      	(__gcov_one_value_profiler_v2): Move to ..
      	(__gcov_topn_values_profiler): ... this.
      	(__gcov_one_value_profiler_v2_atomic): Move to ...
      	(__gcov_topn_values_profiler_atomic): ... this.
      
      From-SVN: r273005
      596341c7
    • Martin Liska's avatar
      Support N values in libgcov for single value counter type. · 1b309ca5
      Martin Liska authored
      2019-07-03  Martin Liska  <mliska@suse.cz>
      
      	* gcc.dg/tree-prof/val-prof-2.c: Update scanned pattern
      	as we do now better.
      2019-07-03  Martin Liska  <mliska@suse.cz>
      
      	* libgcov-merge.c (merge_single_value_set): Support N values.
      	* libgcov-profiler.c (__gcov_one_value_profiler_body): Likewise.
      
      From-SVN: r273004
      1b309ca5
  11. Jun 10, 2019
    • Martin Liska's avatar
      Implement N disk counters for single value and indirect call counters. · 92d41717
      Martin Liska authored
      2019-06-10  Martin Liska  <mliska@suse.cz>
      
      	* gcov-io.h (GCOV_DISK_SINGLE_VALUES): New.
      	(GCOV_SINGLE_VALUE_COUNTERS): Likewise.
      	* ipa-profile.c (ipa_profile_generate_summary):
      	Use get_most_common_single_value.
      	* tree-profile.c (gimple_init_gcov_profiler):
      	Instrument with __gcov_one_value_profiler_v2
      	and __gcov_indirect_call_profiler_v4.
      	* value-prof.c (dump_histogram_value):
      	Print all values for HIST_TYPE_SINGLE_VALUE.
      	(stream_out_histogram_value): Update assert for
      	N values.
      	(stream_in_histogram_value): Set number of
      	counters for HIST_TYPE_SINGLE_VALUE.
      	(get_most_common_single_value): New.
      	(gimple_divmod_fixed_value_transform):
      	Use get_most_common_single_value.
      	(gimple_ic_transform): Likewise.
      	(gimple_stringops_transform): Likewise.
      	(gimple_find_values_to_profile): Set number
      	of counters for HIST_TYPE_SINGLE_VALUE.
      	* value-prof.h (get_most_common_single_value):
      	New.
      2019-06-10  Martin Liska  <mliska@suse.cz>
      
      	* Makefile.in: Add __gcov_one_value_profiler_v2,
      	__gcov_one_value_profiler_v2_atomic and
      	__gcov_indirect_call_profiler_v4.
      	* libgcov-merge.c (__gcov_merge_single): Change
      	function signature.
      	(merge_single_value_set): New.
      	* libgcov-profiler.c (__gcov_one_value_profiler_body):
      	Update functionality.
      	(__gcov_one_value_profiler): Remove.
      	(__gcov_one_value_profiler_v2): ... this.
      	(__gcov_one_value_profiler_atomic): Rename to ...
      	(__gcov_one_value_profiler_v2_atomic): this.
      	(__gcov_indirect_call_profiler_v3): Rename to ...
      	(__gcov_indirect_call_profiler_v4): ... this.
      	* libgcov.h (__gcov_one_value_profiler): Remove.
      	(__gcov_one_value_profiler_atomic): Remove.
      	(__gcov_one_value_profiler_v2_atomic): New.
      	(__gcov_indirect_call_profiler_v3): Remove.
      	(__gcov_one_value_profiler_v2): New.
      	(__gcov_indirect_call_profiler_v4): New.
      	(gcov_get_counter_ignore_scaling): New function.
      
      From-SVN: r272106
      92d41717
  12. Jun 07, 2019
    • Martin Liska's avatar
      Remove indirect call top N counter type. · e37333ba
      Martin Liska authored
      2019-06-07  Martin Liska  <mliska@suse.cz>
      
      	* doc/invoke.texi: Remove param.
      	* gcov-counter.def (GCOV_COUNTER_ICALL_TOPNV):
      	Remove.
      	* gcov-io.h (GCOV_ICALL_TOPN_VAL): Likewise.
      	(GCOV_ICALL_TOPN_NCOUNTS): Likewise.
      	* params.def (PARAM_INDIR_CALL_TOPN_PROFILE): Likewise.
      	* profile.c (instrument_values): Remove
      	HIST_TYPE_INDIR_CALL_TOPN.
      	* tree-profile.c (init_ic_make_global_vars):
      	Always build __gcov_indirect_call only.
      	(gimple_init_gcov_profiler): Remove usage
      	of PARAM_INDIR_CALL_TOPN_PROFILE.
      	(gimple_gen_ic_profiler): Likewise.
      	* value-prof.c (dump_histogram_value): Likewise.
      	(stream_in_histogram_value): Likewise.
      	(gimple_indirect_call_to_profile): Likewise.
      	(gimple_find_values_to_profile): Likewise.
      	* value-prof.h (enum hist_type): Likewise.
      2019-06-07  Martin Liska  <mliska@suse.cz>
      
      	* Makefile.in: Remove usage of
      	_gcov_merge_icall_topn.
      	* libgcov-driver.c (gcov_sort_n_vals): Remove.
      	(gcov_sort_icall_topn_counter): Likewise.
      	(gcov_sort_topn_counter_arrays): Likewise.
      	(dump_one_gcov): Remove call to gcov_sort_topn_counter_arrays.
      	* libgcov-merge.c (__gcov_merge_icall_topn): Remove.
      	* libgcov-profiler.c (__gcov_topn_value_profiler_body):
      	Likewise.
      	(GCOV_ICALL_COUNTER_CLEAR_THRESHOLD): Remove.
      	(struct indirect_call_tuple): Remove.
      	(__gcov_indirect_call_topn_profiler): Remove.
      	* libgcov-util.c (__gcov_icall_topn_counter_op): Remove.
      	* libgcov.h (gcov_sort_n_vals): Remove.
      	(L_gcov_merge_icall_topn): Likewise.
      	(__gcov_merge_icall_topn): Likewise.
      	(__gcov_indirect_call_topn_profiler): Likewise.
      
      From-SVN: r272030
      e37333ba
  13. Jan 18, 2019
    • Martin Liska's avatar
      Bump version of __gcov_indirect_call_profiler function as there was ABI change. · 756721ba
      Martin Liska authored
      2019-01-18  Martin Liska  <mliska@suse.cz>
      
      	* params.def: Fix comment.
      	* tree-profile.c (gimple_init_gcov_profiler): Bump function
      	name.
      	(gimple_gen_ic_func_profiler): Likewise.
      2019-01-18  Martin Liska  <mliska@suse.cz>
      
      	* gcc.dg/no_profile_instrument_function-attr-1.c: Update
      	expected function name.
      2019-01-18  Martin Liska  <mliska@suse.cz>
      
      	* libgcov-profiler.c (__gcov_indirect_call_profiler_v2): Rename
      	to ...
      	(__gcov_indirect_call_profiler_v3): ... this.
      	* libgcov.h (__gcov_indirect_call_profiler_v2): Likewise.
      	(__gcov_indirect_call_profiler_v3): Likewise.
      	* Makefile.in: Bump function name.
      
      From-SVN: r268071
      756721ba
  14. Jan 01, 2019
  15. Oct 25, 2018
    • Martin Liska's avatar
      Revert partially changes from r265454 (PR other/87735). · 3239d726
      Martin Liska authored
      2018-10-25  Martin Liska  <mliska@suse.cz>
      
      	PR other/87735
      	* gcc.dg/tree-prof/time-profiler-1.c: Revert.
      	* gcc.dg/tree-prof/time-profiler-2.c: Likewise.
      	* gcc.dg/tree-prof/time-profiler-3.c: Likewise.
      2018-10-25  Martin Liska  <mliska@suse.cz>
      
      	PR other/87735
      	* libgcov-profiler.c: Revert.
      
      From-SVN: r265494
      3239d726
  16. Oct 24, 2018
    • Martin Liska's avatar
      Remove reduntant dumps and make tp_first_run dump more compact. · 19b55958
      Martin Liska authored
      2018-10-24  Martin Liska  <mliska@suse.cz>
      
      	* cgraph.c (cgraph_node::dump):
      	Remove reduntant dumps and make tp_first_run dump more compact.
      2018-10-24  Martin Liska  <mliska@suse.cz>
      
      	* libgcov-profiler.c: Start from 1 in order to distinguish
      	functions which were seen and these that were not.
      
      From-SVN: r265454
      19b55958
  17. Oct 04, 2018
    • Martin Liska's avatar
      Fix divergence in indirect profiling (PR gcov-profile/84107). · 3edbcdbe
      Martin Liska authored
      2018-10-04  Martin Liska  <mliska@suse.cz>
      
      	PR gcov-profile/84107
      	* tree-profile.c (init_ic_make_global_vars):
      	Remove ic_void_ptr_var and ic_gcov_type_ptr_var.
      	Come up with new ic_tuple* variables.  Emit
      	__gcov_indirect_call{,_topn} variables.
      	(gimple_gen_ic_profiler): Access the variable
      	and emit gimple.
      	(gimple_gen_ic_func_profiler): Access
      	__gcov_indirect_call.callee field.
      	(gimple_init_gcov_profiler): Use ptr_type_node.
      	* value-prof.c (gimple_ic): Use ptr_type_node.
      2018-10-04  Martin Liska  <mliska@suse.cz>
      
      	PR gcov-profile/84107
      	* libgcov-profiler.c (__gcov_indirect_call):
      	Change type to indirect_call_tuple.
      	(struct indirect_call_tuple): New struct.
      	(__gcov_indirect_call_topn_profiler): Change type.
      	(__gcov_indirect_call_profiler_v2): Use the new
      	variables.
      	* libgcov.h (struct indirect_call_tuple): New struct
      	definition.
      
      From-SVN: r264840
      3edbcdbe
  18. Aug 01, 2018
  19. Jan 03, 2018
  20. Jun 09, 2017
    • Martin Liska's avatar
      Speed-up indirect-call instrumentation · 4f751c54
      Martin Liska authored
      2017-06-09  Martin Liska  <mliska@suse.cz>
      
      	* tree-profile.c (gimple_gen_ic_profiler): Update comment.
      	(gimple_gen_ic_func_profiler): Emit direct comparison
      	of __gcov_indirect_call_callee with NULL.
      	(gimple_gen_time_profiler): Change probability from
      	PROB_VERY_UNLIKELY to PROB_UNLIKELY.
      2017-06-09  Martin Liska  <mliska@suse.cz>
      
      	* libgcov-profiler.c (__gcov_indirect_call_profiler_v2):
      	Reset __gcov_indirect_call_callee to NULL.
      
      From-SVN: r249058
      4f751c54
  21. Jan 01, 2017
  22. Nov 03, 2016
    • Martin Liska's avatar
      Make direct emission of time profiler counter · 7d29f8e3
      Martin Liska authored
      	* libgcov-profiler.c (__gcov_time_profiler): Remove.
      	(__gcov_time_profiler_atomic): Likewise.
      	* profile.c (instrument_values): Fix coding style.
      	(branch_prob): Use renamed function.
      	* tree-profile.c (init_ic_make_global_vars): Likewise.
      	(gimple_init_edge_profiler): Rename to
      	gimple_init_gcov_profiler.
      	tree_time_profiler_counter variable declaration.
      	(gimple_gen_time_profiler): Rewrite to do a direct gimple code
      	emission.
      	* value-prof.h: Remove an argument.
      	* gcc.dg/no_profile_instrument_function-attr-1.c: Update scanned
      	output.
      	* gcc.dg/tree-prof/time-profiler-3.c: New test.
      
      From-SVN: r241821
      7d29f8e3
  23. Oct 13, 2016
    • Thomas Preud'homme's avatar
      Move MEMMODEL_* from coretypes.h to memmodel.h · 4d0cdd0c
      Thomas Preud'homme authored
      2016-10-13  Thomas Preud'homme  <thomas.preudhomme@arm.com>
      
          gcc/
          * coretypes.h: Move MEMMODEL_* macros and enum memmodel definition
          into ...
          * memmodel.h: This file.
          * alias.c, asan.c, auto-inc-dec.c, bb-reorder.c, bt-load.c,
            caller-save.c, calls.c, ccmp.c, cfgbuild.c, cfgcleanup.c,
            cfgexpand.c, cfgloopanal.c, cfgrtl.c, cilk-common.c, combine.c,
            combine-stack-adj.c, common/config/aarch64/aarch64-common.c,
            common/config/arm/arm-common.c, common/config/bfin/bfin-common.c,
            common/config/c6x/c6x-common.c, common/config/i386/i386-common.c,
            common/config/ia64/ia64-common.c, common/config/nvptx/nvptx-common.c,
            compare-elim.c, config/aarch64/aarch64-builtins.c,
            config/aarch64/aarch64-c.c, config/aarch64/cortex-a57-fma-steering.c,
            config/arc/arc.c, config/arc/arc-c.c, config/arm/arm-builtins.c,
            config/arm/arm-c.c, config/avr/avr.c, config/avr/avr-c.c,
            config/avr/avr-log.c, config/bfin/bfin.c, config/c6x/c6x.c,
            config/cr16/cr16.c, config/cris/cris.c, config/darwin-c.c,
            config/darwin.c, config/epiphany/epiphany.c,
            config/epiphany/mode-switch-use.c,
            config/epiphany/resolve-sw-modes.c, config/fr30/fr30.c,
            config/frv/frv.c, config/ft32/ft32.c, config/h8300/h8300.c,
            config/i386/i386-c.c, config/i386/winnt.c, config/iq2000/iq2000.c,
            config/lm32/lm32.c, config/m32c/m32c.c, config/m32r/m32r.c,
            config/m68k/m68k.c, config/mcore/mcore.c,
            config/microblaze/microblaze.c, config/mmix/mmix.c,
            config/mn10300/mn10300.c, config/moxie/moxie.c,
            config/msp430/msp430.c, config/nds32/nds32-cost.c,
            config/nds32/nds32-intrinsic.c, config/nds32/nds32-md-auxiliary.c,
            config/nds32/nds32-memory-manipulation.c,
            config/nds32/nds32-predicates.c, config/nds32/nds32.c,
            config/nios2/nios2.c, config/nvptx/nvptx.c, config/pa/pa.c,
            config/pdp11/pdp11.c, config/rl78/rl78.c, config/rs6000/rs6000-c.c,
            config/rx/rx.c, config/s390/s390-c.c, config/s390/s390.c,
            config/sh/sh.c, config/sh/sh-c.c, config/sh/sh-mem.cc,
            config/sh/sh_treg_combine.cc, config/sol2.c, config/spu/spu.c,
            config/stormy16/stormy16.c, config/tilegx/tilegx.c,
            config/tilepro/tilepro.c, config/v850/v850.c, config/vax/vax.c,
            config/visium/visium.c, config/vms/vms-c.c, config/xtensa/xtensa.c,
            coverage.c, cppbuiltin.c, cprop.c, cse.c, cselib.c, dbxout.c, dce.c,
            df-core.c, df-problems.c, df-scan.c, dojump.c, dse.c, dwarf2asm.c,
            dwarf2cfi.c, dwarf2out.c, emit-rtl.c, except.c, explow.c, expmed.c,
            expr.c, final.c, fold-const.c, function.c, fwprop.c, gcse.c,
            ggc-page.c, haifa-sched.c, hsa-brig.c, hsa-gen.c, hw-doloop.c,
            ifcvt.c, init-regs.c, internal-fn.c, ira-build.c, ira-color.c,
            ira-conflicts.c, ira-costs.c, ira-emit.c, ira-lives.c, ira.c, jump.c,
            loop-doloop.c, loop-invariant.c, loop-iv.c, loop-unroll.c,
            lower-subreg.c, lra.c, lra-assigns.c, lra-coalesce.c,
            lra-constraints.c, lra-eliminations.c, lra-lives.c, lra-remat.c,
            lra-spills.c, mode-switching.c, modulo-sched.c, omp-low.c, passes.c,
            postreload-gcse.c, postreload.c, predict.c, print-rtl-function.c,
            recog.c, ree.c, reg-stack.c, regcprop.c, reginfo.c, regrename.c,
            reload.c, reload1.c, reorg.c, resource.c, rtl-chkp.c, rtl-tests.c,
            rtlanal.c, rtlhooks.c, sched-deps.c, sched-rgn.c, sdbout.c,
            sel-sched-ir.c, sel-sched.c, shrink-wrap.c, simplify-rtx.c,
            stack-ptr-mod.c, stmt.c, stor-layout.c, target-globals.c,
            targhooks.c, toplev.c, tree-nested.c, tree-outof-ssa.c,
            tree-profile.c, tree-ssa-coalesce.c, tree-ssa-ifcombine.c,
            tree-ssa-loop-ivopts.c, tree-ssa-loop.c, tree-ssa-reassoc.c,
            tree-ssa-sccvn.c, tree-vect-data-refs.c, ubsan.c, valtrack.c,
            var-tracking.c, varasm.c: Include memmodel.h.
          * genattrtab.c (write_header): Include memmodel.h in generated file.
          * genautomata.c (main): Likewise.
          * gengtype.c (open_base_files): Likewise.
          * genopinit.c (main): Likewise.
          * genconditions.c (write_header): Include memmodel.h earlier in
          generated file.
          * genemit.c (main): Likewise.
          * genoutput.c (output_prologue): Likewise.
          * genpeep.c (main): Likewise.
          * genpreds.c (write_insn_preds_c): Likewise.
          * genrecog.c (write_header): Likewise.
          * Makefile.in (PLUGIN_HEADERS): Include memmodel.h
      
          gcc/ada/
          * gcc-interface/utils2.c: Include memmodel.h.
      
          gcc/c-family/
          * c-cppbuiltin.c: Include memmodel.h.
          * c-opts.c: Likewise.
          * c-pragma.c: Likewise.
          * c-warn.c: Likewise.
      
          gcc/c/
          * c-typeck.c: Include memmodel.h.
      
          gcc/cp/
          * decl2.c: Include memmodel.h.
          * rtti.c: Likewise.
      
          gcc/fortran/
          * trans-intrinsic.c: Include memmodel.h.
      
          gcc/go/
          * go-backend.c: Include memmodel.h.
      
          libgcc/
          * libgcov-profiler.c: Replace MEMMODEL_* macros by their __ATOMIC_*
          equivalent.
          * config/tilepro/atomic.c: Likewise and stop casting model to
          enum memmodel.
      
      From-SVN: r241121
      4d0cdd0c
  24. Sep 06, 2016
    • Martin Liska's avatar
      Detect whether target can use -fprofile-update=atomic · 7fe76f6a
      Martin Liska authored
      	PR gcov-profile/77378
      	PR gcov-profile/77466
      	* libgcov-profiler.c: Use __GCC_HAVE_SYNC_COMPARE_AND_SWAP_{4,8} to
      	conditionaly enable/disable *_atomic functions.
      	PR gcov-profile/77378
      	PR gcov-profile/77466
      	* tree-profile.c (tree_profiling): Detect whether target can use
      	-fprofile-update=atomic.
      	PR gcov-profile/77378
      	PR gcov-profile/77466
      	* gcc.dg/profile-update-warning.c: New test.
      
      From-SVN: r240008
      7fe76f6a
  25. Aug 10, 2016
    • Martin Liska's avatar
      Add new *_atomic counter update function · a266236e
      Martin Liska authored
      	PR gcov-profile/58306
      	* Makefile.in: New functions (modules) are added.
      	* libgcov-profiler.c (__gcov_interval_profiler_atomic): New
      	function.
      	(__gcov_pow2_profiler_atomic): New function.
      	(__gcov_one_value_profiler_body): New argument is instroduced.
      	(__gcov_one_value_profiler): Call with the new argument.
      	(__gcov_one_value_profiler_atomic): Likewise.
      	(__gcov_indirect_call_profiler_v2): Likewise.
      	(__gcov_time_profiler_atomic): New function.
      	(__gcov_average_profiler_atomic): Likewise.
      	(__gcov_ior_profiler_atomic): Likewise.
      	* libgcov.h: Declare the aforementioned functions.
      	PR gcov-profile/58306
      	* gcc.dg/tree-prof/val-profiler-threads-1.c: New test.
      	PR gcov-profile/58306
      	* tree-profile.c (gimple_init_edge_profiler): Create conditionally
      	atomic variants of profile update functions.
      
      From-SVN: r239324
      a266236e
  26. Aug 09, 2016
    • Martin Liska's avatar
      Remove __gcov_indirect_call_profiler · 6dce6418
      Martin Liska authored
      	* Makefile.in: Remove __gcov_indirect_call_profiler.
      	* libgcov-profiler.c (__gcov_indirect_call_profiler): Remove
      	function.
      	* libgcov.h: And the declaration of the function.
      
      From-SVN: r239306
      6dce6418
    • Martin Liska's avatar
      Fix POW2 histogram · dcb1e137
      Martin Liska authored
      	* gcc.dg/tree-prof/val-prof-8.c: New test.
      	* value-prof.c (dump_histogram_value): Swap pow2 and non-pow2
      	values.
      	* libgcov-profiler.c (__gcov_pow2_profiler): Consider 0 as not
      	power of two.
      
      From-SVN: r239304
      dcb1e137
  27. Jan 04, 2016
  28. Jan 05, 2015
  29. Oct 07, 2014
    • Rong Xu's avatar
      Makefile.in: Fix dependence. · afe0c5ee
      Rong Xu authored
      2014-10-06  Rong Xu  <xur@google.com>
      
      	* gcc/Makefile.in: Fix dependence.
      	* gcc/gcov-counter.def (GCOV_COUNTER_ICALL_TOPNV): Add
              indirect call topn profiler.
      	* gcc/gcov-io.h: Ditto.
      	* libgcc/Makefile.in: Ditto.
      	* libgcc/libgcov-driver.c (gcov_sort_n_vals): New utility function.
      	(gcov_sort_icall_topn_counter): Ditto.
      	(gcov_sort_topn_counter_arrays): Ditto.
      	(dump_one_gcov): Sort indirect_call topn counters.
      	* libgcc/libgcov-merge.c (__gcov_merge_icall_topn): New merge
              function.
      	* libgcc/libgcov-profiler.c (__gcov_topn_value_profiler_body): New
              utility function.
      	(__gcov_indirect_call_topn_profiler): New profiler function.
      	* libgcc/libgcov-util.c (__gcov_icall_topn_counter_op): New.
      	* libgcc/libgcov.h: New decls.
      
      From-SVN: r215962
      afe0c5ee
  30. Sep 05, 2014
    • Joseph Myers's avatar
      Use -fbuilding-libgcc for more target macros used in libgcc. · 53d68b9f
      Joseph Myers authored
      gcc/c-family:
      	* c-cppbuiltin.c (c_cpp_builtins): Also define
      	__LIBGCC_EH_TABLES_CAN_BE_READ_ONLY__,
      	__LIBGCC_EH_FRAME_SECTION_NAME__, __LIBGCC_JCR_SECTION_NAME__,
      	__LIBGCC_CTORS_SECTION_ASM_OP__, __LIBGCC_DTORS_SECTION_ASM_OP__,
      	__LIBGCC_TEXT_SECTION_ASM_OP__, __LIBGCC_INIT_SECTION_ASM_OP__,
      	__LIBGCC_INIT_ARRAY_SECTION_ASM_OP__,
      	__LIBGCC_STACK_GROWS_DOWNWARD__,
      	__LIBGCC_DONT_USE_BUILTIN_SETJMP__,
      	__LIBGCC_DWARF_ALT_FRAME_RETURN_COLUMN__,
      	__LIBGCC_DWARF_FRAME_REGISTERS__,
      	__LIBGCC_EH_RETURN_STACKADJ_RTX__, __LIBGCC_JMP_BUF_SIZE__,
      	__LIBGCC_STACK_POINTER_REGNUM__ and
      	__LIBGCC_VTABLE_USES_DESCRIPTORS__ for -fbuilding-libgcc.
      	(builtin_define_with_value): Handle backslash-escaping in string
      	macro values.
      
      libgcc:
      	* Makefile.in (CRTSTUFF_CFLAGS): Add -fbuilding-libgcc.
      	* config/aarch64/linux-unwind.h (STACK_POINTER_REGNUM): Change all
      	uses to __LIBGCC_STACK_POINTER_REGNUM__.
      	(DWARF_ALT_FRAME_RETURN_COLUMN): Change all uses to
      	__LIBGCC_DWARF_ALT_FRAME_RETURN_COLUMN__.
      	* config/alpha/vms-unwind.h (DWARF_ALT_FRAME_RETURN_COLUMN):
      	Change use to __LIBGCC_DWARF_ALT_FRAME_RETURN_COLUMN__.
      	* config/cr16/unwind-cr16.c (STACK_GROWS_DOWNWARD): Change all
      	uses to __LIBGCC_STACK_GROWS_DOWNWARD__.
      	(DWARF_FRAME_REGISTERS): Change all uses to
      	__LIBGCC_DWARF_FRAME_REGISTERS__.
      	(EH_RETURN_STACKADJ_RTX): Change all uses to
      	__LIBGCC_EH_RETURN_STACKADJ_RTX__.
      	* config/cr16/unwind-dw2.h (DWARF_FRAME_REGISTERS): Change use to
      	__LIBGCC_DWARF_FRAME_REGISTERS__.  Remove conditional definition.
      	* config/i386/cygming-crtbegin.c (EH_FRAME_SECTION_NAME): Change
      	use to __LIBGCC_EH_FRAME_SECTION_NAME__.
      	(JCR_SECTION_NAME): Change use to __LIBGCC_JCR_SECTION_NAME__.
      	* config/i386/cygming-crtend.c (EH_FRAME_SECTION_NAME): Change use
      	to __LIBGCC_EH_FRAME_SECTION_NAME__.
      	(JCR_SECTION_NAME): Change use to __LIBGCC_JCR_SECTION_NAME__
      	* config/mips/linux-unwind.h (STACK_POINTER_REGNUM): Change use to
      	__LIBGCC_STACK_POINTER_REGNUM__.
      	(DWARF_ALT_FRAME_RETURN_COLUMN): Change all uses to
      	__LIBGCC_DWARF_ALT_FRAME_RETURN_COLUMN__.
      	* config/nios2/linux-unwind.h (STACK_POINTER_REGNUM): Change use
      	to __LIBGCC_STACK_POINTER_REGNUM__.
      	* config/pa/hpux-unwind.h (DWARF_ALT_FRAME_RETURN_COLUMN): Change
      	all uses to __LIBGCC_DWARF_ALT_FRAME_RETURN_COLUMN__.
      	* config/pa/linux-unwind.h (DWARF_ALT_FRAME_RETURN_COLUMN): Change
      	all uses to __LIBGCC_DWARF_ALT_FRAME_RETURN_COLUMN__.
      	* config/rs6000/aix-unwind.h (DWARF_ALT_FRAME_RETURN_COLUMN):
      	Change all uses to __LIBGCC_DWARF_ALT_FRAME_RETURN_COLUMN__.
      	(STACK_POINTER_REGNUM): Change all uses to
      	__LIBGCC_STACK_POINTER_REGNUM__.
      	* config/rs6000/darwin-fallback.c (STACK_POINTER_REGNUM): Change
      	use to __LIBGCC_STACK_POINTER_REGNUM__.
      	* config/rs6000/linux-unwind.h (STACK_POINTER_REGNUM): Change all
      	uses to __LIBGCC_STACK_POINTER_REGNUM__.
      	* config/sparc/linux-unwind.h (DWARF_FRAME_REGISTERS): Change use
      	to __LIBGCC_DWARF_FRAME_REGISTERS__.
      	* config/sparc/sol2-unwind.h (DWARF_FRAME_REGISTERS): Change use
      	to __LIBGCC_DWARF_FRAME_REGISTERS__.
      	* config/tilepro/linux-unwind.h (STACK_POINTER_REGNUM): Change use
      	to __LIBGCC_STACK_POINTER_REGNUM__.
      	* config/xtensa/unwind-dw2-xtensa.h (DWARF_FRAME_REGISTERS):
      	Remove conditional definition.
      	* crtstuff.c (TEXT_SECTION_ASM_OP): Change all uses to
      	__LIBGCC_TEXT_SECTION_ASM_OP__.
      	(EH_FRAME_SECTION_NAME): Change all uses to
      	__LIBGCC_EH_FRAME_SECTION_NAME__.
      	(EH_TABLES_CAN_BE_READ_ONLY): Change all uses to
      	__LIBGCC_EH_TABLES_CAN_BE_READ_ONLY__.
      	(CTORS_SECTION_ASM_OP): Change all uses to
      	__LIBGCC_CTORS_SECTION_ASM_OP__.
      	(DTORS_SECTION_ASM_OP): Change all uses to
      	__LIBGCC_DTORS_SECTION_ASM_OP__.
      	(JCR_SECTION_NAME): Change all uses to
      	__LIBGCC_JCR_SECTION_NAME__.
      	(INIT_SECTION_ASM_OP): Change all uses to
      	__LIBGCC_INIT_SECTION_ASM_OP__.
      	(INIT_ARRAY_SECTION_ASM_OP): Change all uses to
      	__LIBGCC_INIT_ARRAY_SECTION_ASM_OP__.
      	* generic-morestack.c (STACK_GROWS_DOWNWARD): Change all uses to
      	__LIBGCC_STACK_GROWS_DOWNWARD__.
      	* libgcc2.c (INIT_SECTION_ASM_OP): Change all uses to
      	__LIBGCC_INIT_SECTION_ASM_OP__.
      	(INIT_ARRAY_SECTION_ASM_OP): Change all uses to
      	__LIBGCC_INIT_ARRAY_SECTION_ASM_OP__.
      	(EH_FRAME_SECTION_NAME): Change all uses to
      	__LIBGCC_EH_FRAME_SECTION_NAME__.
      	* libgcov-profiler.c (VTABLE_USES_DESCRIPTORS): Remove conditional
      	definitions.  Change all uses to
      	__LIBGCC_VTABLE_USES_DESCRIPTORS__.
      	* unwind-dw2.c (STACK_GROWS_DOWNWARD): Change all uses to
      	__LIBGCC_STACK_GROWS_DOWNWARD__.
      	(DWARF_FRAME_REGISTERS): Change all uses to
      	__LIBGCC_DWARF_FRAME_REGISTERS__.
      	(EH_RETURN_STACKADJ_RTX): Change all uses to
      	__LIBGCC_EH_RETURN_STACKADJ_RTX__.
      	* unwind-dw2.h (DWARF_FRAME_REGISTERS): Remove conditional
      	definition.  Change use to __LIBGCC_DWARF_FRAME_REGISTERS__.
      	* unwind-sjlj.c (DONT_USE_BUILTIN_SETJMP): Change all uses to
      	__LIBGCC_DONT_USE_BUILTIN_SETJMP__.
      	(JMP_BUF_SIZE): Change use to __LIBGCC_JMP_BUF_SIZE__.
      
      From-SVN: r214954
      53d68b9f
  31. Jan 08, 2014
    • Rong Xu's avatar
      gcov-io.c (gcov_var): Move from gcov-io.h. · 40d6b753
      Rong Xu authored
      2014-01-08  Rong Xu  <xur@google.com> 
      
      	* gcc/gcov-io.c (gcov_var): Move from gcov-io.h.
      	(gcov_position): Ditto.
      	(gcov_is_error): Ditto.
      	(gcov_rewrite): Ditto.
      	* gcc/gcov-io.h: Refactor. Move gcov_var to gcov-io.h, and libgcov
      	only part to libgcc/libgcov.h.
      	* libgcc/libgcov-driver.c: Use libgcov.h.
      	(buffer_fn_data): Use xmalloc instead of malloc.
      	(gcov_exit_merge_gcda): Ditto.
      	* libgcc/libgcov-driver-system.c (allocate_filename_struct): Ditto.
      	* libgcc/libgcov.h: New common header files for libgcov-*.h.
      	* libgcc/libgcov-interface.c: Use libgcov.h
      	* libgcc/libgcov-merge.c: Ditto.
      	* libgcc/libgcov-profiler.c: Ditto.
      	* libgcc/Makefile.in: Add dependence to libgcov.h
      
      From-SVN: r206435
      40d6b753
  32. Jan 02, 2014
  33. Nov 13, 2013
    • Rong Xu's avatar
      The patch re-factors libgcov.c to make it better modulelized. · d6d3f033
      Rong Xu authored
      2013-11-12  Rong Xu  <xur@google.com>
      
      The patch re-factors libgcov.c to make it better modulelized.
      It contains two pieces of work:
      1. break gcov_exit() into the following structure:
         gcov_exit()
            --> gcov_exit_compute_summary()
            --> allocate_filename_struct()
                for gi_ptr in gcov_list
                  --> gcov_exit_dump_gcov()
                         --> gcov_exit_open_gcda_file()
                         --> gcov_exit_merge_gcda ()
                         --> gcov_exit_merge_summary ()
                         --> gcov_exit_write_gcda ()
      2. split libgcov.c into the following files:
           libgcov-profiler.c
           libgcov-merge.c
           libgcov-interface.c
           libgcov-driver.c
             libgcov-driver-system.c (source included into libgcov-driver.c)
      
      	* libgcc/libgcov.c: Delete as part of re-factoring.
      	* gcc/gcov-io.h (__gcov_indirect_call_profiler): Add the decl to
              avoid warning.
      	* libgcc/libgcov-interface.c (init_mx): Moved from libgcov.c.
      	(init_mx_once): Ditto.
      	(__gcov_flush): Ditto.
      	(__gcov_reset): Ditto.
      	(__gcov_dump): Ditto.
      	(__gcov_fork): Ditto.
      	(__gcov_execl): Ditto.
      	(__gcov_execlp): Ditto.
      	(__gcov_execle): Ditto.
      	(__gcov_execv): Ditto.
      	(__gcov_execvp): Ditto.
      	(__gcov_execve): Ditto.
              * libgcc/libgcov-merge.c (__gcov_merge_time_profile): Moved from
              libgcov.c.
      	(__gcov_merge_add): Ditto.
      	(__gcov_merge_ior): Ditto.
      	(__gcov_merge_single): Ditto.
      	(__gcov_merge_delta): Ditto.
      	* libgcc/libgcov-profiler.c 
      	(__gcov_interval_profiler): Ditto.
      	(__gcov_pow2_profiler): Ditto.
      	(__gcov_one_value_profiler_body): Ditto.
      	(__gcov_one_value_profiler): Ditto.
      	(__gcov_indirect_call_profiler): Ditto.
      	(__gcov_indirect_call_profiler_v2): Ditto.
      	(__gcov_time_profiler): Ditto.
      	(__gcov_average_profiler): Ditto.
      	(__gcov_ior_profiler): Ditto.
      	* libgcc/libgcov-driver.c (set_gcov_list): New.
      	(get_gcov_dump_complete): Ditto.
      	(set_gcov_dump_complete):Ditto.
      	(reset_gcov_dump_complete):Ditto.
      	(gcov_exit_compute_summary): New function split from gcov_exit().
      	(gcov_exit_merge_gcda): Ditto.
      	(gcov_exit_write_gcda): Ditto.
      	(gcov_exit_merge_summary): Ditto.
      	(gcov_exit_dump_gcov): Ditto.
      	(struct gcov_fn_buffer): Moved from libgcov.c
      	(struct gcov_summary_buffer): Ditto.
      	(free_fn_data): Ditto.
      	(buffer_fn_data): Ditto.
      	(crc32_unsigned): Ditto.
      	(gcov_version): Ditto.
      	(gcov_histogram_insert): Ditto.
      	(gcov_compute_histogram): Ditto.
      	(gcov_exit): Ditto.
      	(gcov_clear): Ditto.
      	(__gcov_init): Ditto.
              (this_prg): Make it file scope static variable.
              (all_prg): Ditto.
              (crc32): Ditto.
              (gi_filename): Ditto.
              (fn_buffer): Ditto.
              (sum_buffer): Ditto.
              (struct gcov_filename_aux): New types to store auxiliary information
              for gi_filename.
      	* libgcc/libgcov-driver-system.c (gcov_error): New utility function.
      	(allocate_filename_struct): New function split from gcov_exit().
      	(gcov_exit_open_gcda_file): Ditto.
      	(create_file_directory): Moved from libgcov.c
      	* libgcc/Makefile.in: Change to build newly added files.
      
      From-SVN: r204730
      d6d3f033
Loading