namedret2.C   [plain text]


// Skip if not target: alpha*-*-*
// Special g++ Options: -Wno-deprecated

// This test verifies that return type promotion is working correctly.  
// The Alpha ABI specifies that 32-bit return values have bit 31 propagated,
// i.e. the value is sign-extended even if the unpromoted type is unsigned.

unsigned int f(unsigned int x) return y(x) { }

extern "C" void abort ();

int main()
{
  typedef long (*long_func)(long);
  long_func g = reinterpret_cast<long_func>(f);

  if (g(-1L) != -1L)
    abort ();
  return 0;
}