------- Comment #6 from reichelt at gcc dot gnu dot org  2009-06-08 12:03 
-------
The testcase from comment #2 doesn't show the bug anymore.
Here's a slightly modified version that does:

========================================================
typedef struct A
{
  int i : 2;
  struct A *p;
} A;

static int f1(A *t)
{
  if (t->i)
    return 0;
  return t->i;
}

static A *f2(A *t)
{
  if (t->i)
    return f2(t->p);
  else
    return t;
}

static int f3(A *t)
{
  return f1(f2(t));
}

static int f4(A *t)
{
  if (f3(f2(t)))
    g(0, 0, 0, 0, 0, 0, 0);
  return t->i;
}

int f5(A *t)
{
  return f3(t);
}

static int f6(A *t)
{
  return f5(t) || f5(f2(t));
}

static int f7(A *t)
{
  return f6(t) || f4(t);
}

int foo(A *t)
{
  return f7(t);
}
========================================================


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40126

Reply via email to