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

            Bug ID: 92497
           Summary: Aggregate IPA-CP and inlining do not play well
                    together, transformation is lost
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: ipa
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jamborm at gcc dot gnu.org
                CC: hubicka at gcc dot gnu.org, marxin at gcc dot gnu.org
  Target Milestone: ---

The following breaks when compiled with -O2 -fno-early-inlining:

/* { dg-do run } */
/* { dg-options "-O2 -fno-early-inlining"  } */

struct a {int a;};
static int //__attribute__ ((noinline))
foo (struct a a)
{
  if (!__builtin_constant_p (a.a))
    __builtin_abort ();
  return a.a;
}

static int __attribute__ ((noinline))
bar (struct a a)
{
  return foo(a);
}

int main()
{
  struct a a={1};
  return bar (a);
}


This happens because we do not apply IPA-CP transformation on foo
before we inline it to bar.

See also the thread beginning with:
https://gcc.gnu.org/ml/gcc-patches/2019-11/msg00891.html

Reply via email to