libgcov: Fix merging of topn [PR92924]
PR tree-optimization/92924 * libgcov-merge.c (merge_topn_values_set): Fix merging.
This commit is contained in:
parent
ad8e2415d6
commit
e3fe0070c1
@ -112,9 +112,11 @@ merge_topn_values_set (gcov_type *counters)
|
|||||||
for (unsigned i = 0; i < GCOV_TOPN_VALUES; i++)
|
for (unsigned i = 0; i < GCOV_TOPN_VALUES; i++)
|
||||||
{
|
{
|
||||||
if (read_counters[2 * i + 1] == 0)
|
if (read_counters[2 * i + 1] == 0)
|
||||||
return;
|
continue;
|
||||||
|
|
||||||
unsigned j;
|
unsigned j;
|
||||||
|
int slot = -1;
|
||||||
|
|
||||||
for (j = 0; j < GCOV_TOPN_VALUES; j++)
|
for (j = 0; j < GCOV_TOPN_VALUES; j++)
|
||||||
{
|
{
|
||||||
if (counters[2 * j] == read_counters[2 * i])
|
if (counters[2 * j] == read_counters[2 * i])
|
||||||
@ -123,18 +125,23 @@ merge_topn_values_set (gcov_type *counters)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else if (counters[2 * j + 1] == 0)
|
else if (counters[2 * j + 1] == 0)
|
||||||
{
|
slot = j;
|
||||||
counters[2 * j] += read_counters[2 * i];
|
|
||||||
counters[2 * j + 1] += read_counters[2 * i + 1];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We haven't found a slot, bail out. */
|
|
||||||
if (j == GCOV_TOPN_VALUES)
|
if (j == GCOV_TOPN_VALUES)
|
||||||
{
|
{
|
||||||
counters[1] = -1;
|
if (slot > 0)
|
||||||
return;
|
{
|
||||||
|
/* If we found empty slot, add the value. */
|
||||||
|
counters[2 * slot] = read_counters[2 * i];
|
||||||
|
counters[2 * slot + 1] = read_counters[2 * i + 1];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* We haven't found a slot, bail out. */
|
||||||
|
counters[1] = -1;
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user