https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120065
Bug ID: 120065
Summary: [14/15/16 Regression] profile info corrupted by dom2
Product: gcc
Version: 16.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: acoplan at gcc dot gnu.org
Target Milestone: ---
For the following testcase on the trunk, the profile info gets corrupted by
dom2 (reproduced on both x86_64 and aarch64):
$ cat small.c
float *a;
int j;
void foo(int n, float f) {
while (n > 0 && a)
;
for (j = 0; j < n; ++j)
a[j] = f;
}
$ ./xgcc -B . -c small.c -O2 -S -o /dev/null
-fdump-tree-thread1-blocks-details=- | grep -B 1 "Invalid sum"
$ ./xgcc -B . -c small.c -O2 -S -o /dev/null -fdump-tree-dom2-blocks-details=-
| grep -B 1 "Invalid sum"
;; basic block 4, loop depth 1, count 958878295 (estimated locally, freq
8.3480), maybe hot
;; Invalid sum of incoming counts 1011616600 (estimated locally, freq
8.8071), should be 958878295 (estimated locally, freq 8.3480)
--
;; basic block 5, loop depth 0, count 102228543 (estimated locally, freq
0.8900), maybe hot
;; Invalid sum of incoming counts 3069425 (estimated locally, freq 0.0267),
should be 102228543 (estimated locally, freq 0.8900)
--
;; basic block 8, loop depth 0, count 12634988 (estimated locally, freq
0.1100), maybe hot
;; Invalid sum of incoming counts 59055800 (estimated locally, freq 0.5141),
should be 12634988 (estimated locally, freq 0.1100)
It seems to have started in the GCC 14 timeframe.