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?