https://gcc.gnu.org/bugzilla/show_bug.cgi?id=38264

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|2012-02-02 00:00:00         |2023-5-26

--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> ---
I filed this because for

void bar ();
void foo (int n)
{
  int i = 0;
  do
    bar ();
  while (++i < n);
}

we never remove the preheader forwarder created by loop passes on GIMPLE:

void foo (int n)
{
  int i;

  <bb 2> [local count: 118111600]:

  <bb 3> [local count: 1073741824]:
  # i_1 = PHI <0(2), i_5(3)>

but if you add a bar() call before the loop we do, because the forwarder
isn't the first block then.

void foo (int n)
{
  int i;

  <bb 2> [local count: 118111600]:
  bar ();

  <bb 3> [local count: 1073741824]:
  # i_1 = PHI <0(2), i_6(3)>

Reply via email to