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

--- Comment #11 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
Here's a small (auto-)reduced testcase for this specific issue:

markus@x4 ~ % cat fair.i
int a, b, d;
enum cpu_idle_type
{
  CPU_MAX_IDLE_TYPES
};
struct sched_domain
{
  int balance_interval;
  int lb_count[0];
  int lb_nobusyg[];
} c,*g ;
__typeof__(int[0]) f;
int *h;
static struct sched_domain *fn1 (int *p1, int *p2)
{
  struct sched_domain *e;
  int i;
  for (; i = fn2 (i);)
    {
      e = &*(
               {

                 __asm__("" : "=r"(d) : "0"(0));
                 (typeof(&c))0 + a;

               });
      fn3 ();
      fn4 (i);
    }
  return e;
}

fn5 (int p1, struct sched_domain *p2, enum cpu_idle_type p3)
{
  int *j = *(
               {
                 long k;
                 asm volatile("" : "=r"(k) : ""(b), "0"(&f));
                 (typeof(*&f) *)k;
               });
  if (p3)
    h = 0;
  int l = *j;
  p2->lb_count[p3]++;
redo:
  p2->lb_nobusyg[p3]++;
  g = fn1 (0, 0);
  if (fn6 (j))
    goto redo;
  p2->balance_interval *= 2;
}

markus@x4 ~ % gcc -c -mcmodel=kernel -Os -fno-omit-frame-pointer
-fcompare-debug fair.i
gcc: error: fair.i: -fcompare-debug failure (length)
markus@x4 ~ % gcc -c -mcmodel=kernel -O2 -fno-omit-frame-pointer
-fcompare-debug fair.i
markus@x4 ~ %

Reply via email to