https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96729
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |aoliva at gcc dot gnu.org,
| |jakub at gcc dot gnu.org
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
I can't reproduce this. Well, -O3 -g takes way longer but that's because
we elide the stores to a, b, d and e since the loop is endless and then
we unroll it all ending up with a basic-block with just ~20000 useless
debug stmts.
So we now optimize as expected.
-gno-statement-frontiers makes it also compiled fast.
Now the question is whether we may want to do anything about a BB like
<bb 10> [local count: 1804255]:
[t.c:4:3] # DEBUG BEGIN_STMT
[t.c:5:5] # DEBUG BEGIN_STMT
[t.c:6:5] # DEBUG BEGIN_STMT
[t.c:10:7] # DEBUG BEGIN_STMT
[t.c:11:7] # DEBUG BEGIN_STMT
[t.c:11:14] # DEBUG BEGIN_STMT
[t.c:12:9] # DEBUG BEGIN_STMT
[t.c:13:9] # DEBUG BEGIN_STMT
[t.c:13:16] # DEBUG BEGIN_STMT
[t.c:14:13] # DEBUG g => NULL
[t.c:14:11] # DEBUG BEGIN_STMT
[t.c:14:13] # DEBUG g => 0
[t.c:15:11] # DEBUG BEGIN_STMT
[t.c:15:19] [t.c:15:15] [t.c:15:12] c[0][0] = 3;
[t.c:13:23] # DEBUG BEGIN_STMT
[t.c:13:16] # DEBUG BEGIN_STMT
[t.c:11:22] # DEBUG BEGIN_STMT
[t.c:11:14] # DEBUG BEGIN_STMT
[t.c:12:9] # DEBUG BEGIN_STMT
[t.c:13:9] # DEBUG BEGIN_STMT
[t.c:13:16] # DEBUG BEGIN_STMT
[t.c:14:13] # DEBUG g => NULL
[t.c:14:11] # DEBUG BEGIN_STMT
[t.c:14:13] # DEBUG g => 0
[t.c:15:11] # DEBUG BEGIN_STMT
[t.c:13:23] # DEBUG BEGIN_STMT
[t.c:13:16] # DEBUG BEGIN_STMT
[t.c:11:22] # DEBUG BEGIN_STMT
[t.c:11:14] # DEBUG BEGIN_STMT
[t.c:12:9] # DEBUG BEGIN_STMT
[t.c:13:9] # DEBUG BEGIN_STMT
[t.c:13:16] # DEBUG BEGIN_STMT
[t.c:14:13] # DEBUG g => NULL
[t.c:14:11] # DEBUG BEGIN_STMT
[t.c:14:13] # DEBUG g => 0
[t.c:15:11] # DEBUG BEGIN_STMT
[t.c:13:23] # DEBUG BEGIN_STMT
[t.c:13:16] # DEBUG BEGIN_STMT
[t.c:11:22] # DEBUG BEGIN_STMT
[t.c:11:14] # DEBUG BEGIN_STMT
[t.c:12:9] # DEBUG BEGIN_STMT
[t.c:13:9] # DEBUG BEGIN_STMT
[t.c:13:16] # DEBUG BEGIN_STMT
[t.c:14:13] # DEBUG g => NULL
[t.c:14:11] # DEBUG BEGIN_STMT
[t.c:14:13] # DEBUG g => 0
...
[t.c:15:11] # DEBUG BEGIN_STMT
[t.c:15:19] [t.c:15:15] [t.c:15:12] c[1][0] = 3;
[t.c:13:23] # DEBUG BEGIN_STMT
[t.c:13:16] # DEBUG BEGIN_STMT
[t.c:11:22] # DEBUG BEGIN_STMT
[t.c:11:14] # DEBUG BEGIN_STMT
...
I understand that it is not as simple as simply killing adjacent
DEBUG BEGIN_STMT stmts, keeping only the last?