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?

Reply via email to