diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2023-11-23 14:45:50 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2023-11-23 15:54:43 +0100 |
commit | 8674d70ce37ca3249a641fb418c6849d4f95f348 (patch) | |
tree | 5cfb2ca473405ecfc2411d3137c2142dd34a8c57 /gcc | |
parent | 466b100e5fee808d77598e0f294654deec281150 (diff) | |
download | gcc-8674d70ce37ca3249a641fb418c6849d4f95f348.zip gcc-8674d70ce37ca3249a641fb418c6849d4f95f348.tar.gz gcc-8674d70ce37ca3249a641fb418c6849d4f95f348.tar.bz2 |
gcov: No atomic ops for -fprofile-update=single
gcc/ChangeLog:
PR tree-optimization/112678
* tree-profile.cc (tree_profiling): Do not use atomic operations
for -fprofile-update=single.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/tree-profile.cc | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/gcc/tree-profile.cc b/gcc/tree-profile.cc index 1ac0fdb..9c8fdb8 100644 --- a/gcc/tree-profile.cc +++ b/gcc/tree-profile.cc @@ -767,6 +767,7 @@ tree_profiling (void) = HAVE_sync_compare_and_swapsi || HAVE_atomic_compare_and_swapsi; bool have_atomic_8 = HAVE_sync_compare_and_swapdi || HAVE_atomic_compare_and_swapdi; + bool needs_split = gcov_type_size == 8 && !have_atomic_8 && have_atomic_4; if (!can_support_atomic) { if (gcov_type_size == 4) @@ -775,6 +776,9 @@ tree_profiling (void) can_support_atomic = have_atomic_8; } + if (flag_profile_update != PROFILE_UPDATE_SINGLE && needs_split) + counter_update = COUNTER_UPDATE_ATOMIC_PARTIAL; + if (flag_profile_update == PROFILE_UPDATE_ATOMIC && !can_support_atomic) { @@ -788,13 +792,11 @@ tree_profiling (void) if (flag_profile_update == PROFILE_UPDATE_ATOMIC) { - if (gcov_type_size == 8 && !have_atomic_8 && have_atomic_4) + if (needs_split) counter_update = COUNTER_UPDATE_ATOMIC_SPLIT; else counter_update = COUNTER_UPDATE_ATOMIC_BUILTIN; } - else if (gcov_type_size == 8 && have_atomic_4) - counter_update = COUNTER_UPDATE_ATOMIC_PARTIAL; /* This is a small-ipa pass that gets called only once, from cgraphunit.cc:ipa_passes(). */ |