scalar-by-value-y.h   [plain text]


extern void abort (void);

#if USE_MEMCMP
/* For comparing vectors.  */
#define TEST_FUNCS(NAME, TYPE, PADT, VAL, VAL2) \
void NAME##_f0 (TYPE a, PADT b)						\
{									\
  if (memcmp (&a, &VAL, sizeof (a)) != 0 || b != VAL2)			\
    abort ();								\
}									\
									\
void NAME##_f1 (PADT z0, TYPE a, PADT b)				\
{									\
  if (z0 != (PADT) 0							\
      || memcmp (&a, &VAL, sizeof (a)) != 0 || b != VAL2)		\
    abort ();								\
}									\
									\
void NAME##_f2 (PADT z0, PADT z1, TYPE a, PADT b)			\
{									\
  if (z0 != (PADT) 0							\
      || z1 != (PADT) 0							\
      || memcmp (&a, &VAL, sizeof (a)) != 0 || b != VAL2)		\
    abort ();								\
}									\
									\
void NAME##_f3 (PADT z0, PADT z1, PADT z2, TYPE a, PADT b)		\
{									\
  if (z0 != (PADT) 0							\
      || z1 != (PADT) 0							\
      || z2 != (PADT) 0							\
      || memcmp (&a, &VAL, sizeof (a)) != 0 || b != VAL2)		\
    abort ();								\
}									\
									\
void NAME##_f4 (PADT z0, PADT z1, PADT z2, PADT z3, TYPE a, PADT b)	\
{									\
  if (z0 != (PADT) 0							\
      || z1 != (PADT) 0							\
      || z2 != (PADT) 0							\
      || z3 != (PADT) 0							\
      || memcmp (&a, &VAL, sizeof (a)) != 0 || b != VAL2)		\
    abort ();								\
}									\
									\
void NAME##_f5 (PADT z0, PADT z1, PADT z2, PADT z3, PADT z4, TYPE a,	\
		PADT b)							\
{									\
  if (z0 != (PADT) 0							\
      || z1 != (PADT) 0							\
      || z2 != (PADT) 0							\
      || z3 != (PADT) 0							\
      || z4 != (PADT) 0							\
      || memcmp (&a, &VAL, sizeof (a)) != 0 || b != VAL2)		\
    abort ();								\
}									\
									\
void NAME##_f6 (PADT z0, PADT z1, PADT z2, PADT z3, PADT z4, PADT z5,	\
		TYPE a, PADT b)						\
{									\
  if (z0 != (PADT) 0							\
      || z1 != (PADT) 0							\
      || z2 != (PADT) 0							\
      || z3 != (PADT) 0							\
      || z4 != (PADT) 0							\
      || z5 != (PADT) 0							\
      || memcmp (&a, &VAL, sizeof (a)) != 0 || b != VAL2)		\
    abort ();								\
}									\
									\
void NAME##_f7 (PADT z0, PADT z1, PADT z2, PADT z3, PADT z4, PADT z5,	\
		PADT z6, TYPE a, PADT b)				\
{									\
  if (z0 != (PADT) 0							\
      || z1 != (PADT) 0							\
      || z2 != (PADT) 0							\
      || z3 != (PADT) 0							\
      || z4 != (PADT) 0							\
      || z5 != (PADT) 0							\
      || z6 != (PADT) 0							\
      || memcmp (&a, &VAL, sizeof (a)) != 0 || b != VAL2)		\
    abort ();								\
}									\
									\
void NAME##_f8 (PADT z0, PADT z1, PADT z2, PADT z3, PADT z4, PADT z5,	\
		PADT z6, PADT z7, TYPE a, PADT b)			\
{									\
  if (z0 != (PADT) 0							\
      || z1 != (PADT) 0							\
      || z2 != (PADT) 0							\
      || z3 != (PADT) 0							\
      || z4 != (PADT) 0							\
      || z5 != (PADT) 0							\
      || z6 != (PADT) 0							\
      || z7 != (PADT) 0							\
      || memcmp (&a, &VAL, sizeof (a)) != 0 || b != VAL2)		\
    abort ();								\
}									\
									\
void NAME##_f9 (PADT z0, PADT z1, PADT z2, PADT z3, PADT z4, PADT z5,	\
		PADT z6, PADT z7, PADT z8, TYPE a, PADT b)		\
{									\
  if (z0 != (PADT) 0							\
      || z1 != (PADT) 0							\
      || z2 != (PADT) 0							\
      || z3 != (PADT) 0							\
      || z4 != (PADT) 0							\
      || z5 != (PADT) 0							\
      || z6 != (PADT) 0							\
      || z7 != (PADT) 0							\
      || z8 != (PADT) 0							\
      || memcmp (&a, &VAL, sizeof (a)) != 0 || b != VAL2)		\
    abort ();								\
}									\
									\
void NAME##_fv (int n, ...)						\
{									\
  __builtin_va_list ap;							\
  TYPE x;								\
  __builtin_va_start (ap, n);						\
									\
  while (n-- != 0)							\
    if (__builtin_va_arg (ap, PADT) != (PADT) 0)			\
      abort ();								\
									\
  x = __builtin_va_arg (ap, TYPE);					\
  if (memcmp (&x, &VAL, sizeof (x)) != 0 )				\
    abort ();								\
									\
  if (__builtin_va_arg (ap, PADT) != VAL2)				\
    abort ();								\
									\
  __builtin_va_end (ap);						\
}

#else

#define TEST_FUNCS(NAME, TYPE, PADT, VAL, VAL2) \
void NAME##_f0 (TYPE a, PADT b)						\
{									\
  if (a != VAL || b != VAL2)						\
    abort ();								\
}									\
									\
void NAME##_f1 (PADT z0, TYPE a, PADT b)				\
{									\
  if (z0 != (PADT) 0							\
      || a != VAL || b != VAL2)						\
    abort ();								\
}									\
									\
void NAME##_f2 (PADT z0, PADT z1, TYPE a, PADT b)			\
{									\
  if (z0 != (PADT) 0							\
      || z1 != (PADT) 0							\
      || a != VAL || b != VAL2)						\
    abort ();								\
}									\
									\
void NAME##_f3 (PADT z0, PADT z1, PADT z2, TYPE a, PADT b)		\
{									\
  if (z0 != (PADT) 0							\
      || z1 != (PADT) 0							\
      || z2 != (PADT) 0							\
      || a != VAL || b != VAL2)						\
    abort ();								\
}									\
									\
void NAME##_f4 (PADT z0, PADT z1, PADT z2, PADT z3, TYPE a, PADT b)	\
{									\
  if (z0 != (PADT) 0							\
      || z1 != (PADT) 0							\
      || z2 != (PADT) 0							\
      || z3 != (PADT) 0							\
      || a != VAL || b != VAL2)						\
    abort ();								\
}									\
									\
void NAME##_f5 (PADT z0, PADT z1, PADT z2, PADT z3, PADT z4, TYPE a,	\
		PADT b)							\
{									\
  if (z0 != (PADT) 0							\
      || z1 != (PADT) 0							\
      || z2 != (PADT) 0							\
      || z3 != (PADT) 0							\
      || z4 != (PADT) 0							\
      || a != VAL || b != VAL2)						\
    abort ();								\
}									\
									\
void NAME##_f6 (PADT z0, PADT z1, PADT z2, PADT z3, PADT z4, PADT z5,	\
		TYPE a, PADT b)						\
{									\
  if (z0 != (PADT) 0							\
      || z1 != (PADT) 0							\
      || z2 != (PADT) 0							\
      || z3 != (PADT) 0							\
      || z4 != (PADT) 0							\
      || z5 != (PADT) 0							\
      || a != VAL || b != VAL2)						\
    abort ();								\
}									\
									\
void NAME##_f7 (PADT z0, PADT z1, PADT z2, PADT z3, PADT z4, PADT z5,	\
		PADT z6, TYPE a, PADT b)				\
{									\
  if (z0 != (PADT) 0							\
      || z1 != (PADT) 0							\
      || z2 != (PADT) 0							\
      || z3 != (PADT) 0							\
      || z4 != (PADT) 0							\
      || z5 != (PADT) 0							\
      || z6 != (PADT) 0							\
      || a != VAL || b != VAL2)						\
    abort ();								\
}									\
									\
void NAME##_f8 (PADT z0, PADT z1, PADT z2, PADT z3, PADT z4, PADT z5,	\
		PADT z6, PADT z7, TYPE a, PADT b)			\
{									\
  if (z0 != (PADT) 0							\
      || z1 != (PADT) 0							\
      || z2 != (PADT) 0							\
      || z3 != (PADT) 0							\
      || z4 != (PADT) 0							\
      || z5 != (PADT) 0							\
      || z6 != (PADT) 0							\
      || z7 != (PADT) 0							\
      || a != VAL || b != VAL2)						\
    abort ();								\
}									\
									\
void NAME##_f9 (PADT z0, PADT z1, PADT z2, PADT z3, PADT z4, PADT z5,	\
		PADT z6, PADT z7, PADT z8, TYPE a, PADT b)		\
{									\
  if (z0 != (PADT) 0							\
      || z1 != (PADT) 0							\
      || z2 != (PADT) 0							\
      || z3 != (PADT) 0							\
      || z4 != (PADT) 0							\
      || z5 != (PADT) 0							\
      || z6 != (PADT) 0							\
      || z7 != (PADT) 0							\
      || z8 != (PADT) 0							\
      || a != VAL || b != VAL2)						\
    abort ();								\
}									\
									\
void NAME##_fv (int n, ...)						\
{									\
  __builtin_va_list ap;							\
									\
  __builtin_va_start (ap, n);						\
									\
  while (n-- != 0)							\
    if (__builtin_va_arg (ap, PADT) != (PADT) 0)			\
      abort ();								\
									\
  if (__builtin_va_arg (ap, TYPE) != VAL)				\
    abort ();								\
									\
  if (__builtin_va_arg (ap, PADT) != VAL2)				\
    abort ();								\
									\
  __builtin_va_end (ap);						\
}

#endif