#include<stdio.h>

void foo (int a, int b, void (*hook) (int aa, int bb, int cc))
{
  b += a;
  hook (a, b, a + b);
}

void qq (int a)
{
  auto void q1 (int aa, int bb, int cc);
  void q1 (int aa, int bb, int cc)
    {
      printf ("%d %d %d\n", a, aa + bb, cc);
    }

  foo (a, a + 1, q1);
}

int main()
{
  qq (10);
}

Compile with:
gcc -m32 -mregparm=3 -Os test.c

./a.out
10 31 -6674368

Ok, this was the only important part of the message to us GCC hackers. :-)

Can you please report a bug in bugzilla, saying which versions work and which fail? Also can you write in the report what was your analysis with respect to regparm?

Thanks!

Paolo

Reply via email to