20010605-3.c   [plain text]


struct A { unsigned long buf[100]; };
int foo(unsigned int *x)
{
  unsigned int a;

  if (!x)
    return -22;

#ifdef __ia64__
  if (({
    register long b asm ("r8") = 0;
    register long c asm ("r9") = 0;
    asm ("" : "=r"(c), "=r"(b) : "m"(*(struct A *)x), "1"(b));
    a = (unsigned int) c;
    b; }))
    return -14;
#endif

  return 0;
}