OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gcc-4.2.2/] [gcc/] [testsuite/] [gcc.c-torture/] [execute/] [va-arg-24.c] - Diff between revs 154 and 816

Only display areas with differences | Details | Blame | View Log

Rev 154 Rev 816
/* The purpose of this code is to test argument passing of a tuple of
/* The purpose of this code is to test argument passing of a tuple of
   11 integers, with the break point between named and unnamed arguments
   11 integers, with the break point between named and unnamed arguments
   at every possible position.  */
   at every possible position.  */
 
 
#include <stdarg.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>
 
 
static int errors = 0;
static int errors = 0;
 
 
static void
static void
verify (const char *tcase, int n[11])
verify (const char *tcase, int n[11])
{
{
  int i;
  int i;
  for (i = 0; i <= 10; i++)
  for (i = 0; i <= 10; i++)
    if (n[i] != i)
    if (n[i] != i)
      {
      {
        printf (" %s: n[%d] = %d expected %d\n", tcase, i, n[i], i);
        printf (" %s: n[%d] = %d expected %d\n", tcase, i, n[i], i);
        errors++;
        errors++;
      }
      }
}
}
 
 
#define STR(x) #x
#define STR(x) #x
 
 
#define p(i) int q##i,
#define p(i) int q##i,
#define P(i) n[i] = q##i;
#define P(i) n[i] = q##i;
 
 
#define p0 p(0)
#define p0 p(0)
#define p1 p(1)
#define p1 p(1)
#define p2 p(2)
#define p2 p(2)
#define p3 p(3)
#define p3 p(3)
#define p4 p(4)
#define p4 p(4)
#define p5 p(5)
#define p5 p(5)
#define p6 p(6)
#define p6 p(6)
#define p7 p(7)
#define p7 p(7)
#define p8 p(8)
#define p8 p(8)
#define p9 p(9)
#define p9 p(9)
 
 
#define P0 P(0)
#define P0 P(0)
#define P1 P(1)
#define P1 P(1)
#define P2 P(2)
#define P2 P(2)
#define P3 P(3)
#define P3 P(3)
#define P4 P(4)
#define P4 P(4)
#define P5 P(5)
#define P5 P(5)
#define P6 P(6)
#define P6 P(6)
#define P7 P(7)
#define P7 P(7)
#define P8 P(8)
#define P8 P(8)
#define P9 P(9)
#define P9 P(9)
 
 
#define TCASE(x, params, vecinit)               \
#define TCASE(x, params, vecinit)               \
static void                                     \
static void                                     \
varargs##x (params ...)                         \
varargs##x (params ...)                         \
{                                               \
{                                               \
  va_list ap;                                   \
  va_list ap;                                   \
  int n[11];                                    \
  int n[11];                                    \
  int i;                                        \
  int i;                                        \
                                                \
                                                \
  va_start (ap, q##x);                          \
  va_start (ap, q##x);                          \
  vecinit                                       \
  vecinit                                       \
  for (i = x + 1; i <= 10; i++)                 \
  for (i = x + 1; i <= 10; i++)                 \
    n[i] = va_arg (ap, int);                    \
    n[i] = va_arg (ap, int);                    \
  va_end (ap);                                  \
  va_end (ap);                                  \
                                                \
                                                \
  verify (STR(varargs##x), n);                  \
  verify (STR(varargs##x), n);                  \
}
}
 
 
#define TEST(x) varargs##x (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
#define TEST(x) varargs##x (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
 
 
TCASE(0, p0                            , P0                           )
TCASE(0, p0                            , P0                           )
TCASE(1, p0 p1                        , P0 P1                        )
TCASE(1, p0 p1                        , P0 P1                        )
TCASE(2, p0 p1 p2                     , P0 P1 P2                     )
TCASE(2, p0 p1 p2                     , P0 P1 P2                     )
TCASE(3, p0 p1 p2 p3                  , P0 P1 P2 P3                  )
TCASE(3, p0 p1 p2 p3                  , P0 P1 P2 P3                  )
TCASE(4, p0 p1 p2 p3 p4               , P0 P1 P2 P3 P4               )
TCASE(4, p0 p1 p2 p3 p4               , P0 P1 P2 P3 P4               )
TCASE(5, p0 p1 p2 p3 p4 p5            , P0 P1 P2 P3 P4 P5            )
TCASE(5, p0 p1 p2 p3 p4 p5            , P0 P1 P2 P3 P4 P5            )
TCASE(6, p0 p1 p2 p3 p4 p5 p6         , P0 P1 P2 P3 P4 P5 P6         )
TCASE(6, p0 p1 p2 p3 p4 p5 p6         , P0 P1 P2 P3 P4 P5 P6         )
TCASE(7, p0 p1 p2 p3 p4 p5 p6 p7      , P0 P1 P2 P3 P4 P5 P6 P7      )
TCASE(7, p0 p1 p2 p3 p4 p5 p6 p7      , P0 P1 P2 P3 P4 P5 P6 P7      )
TCASE(8, p0 p1 p2 p3 p4 p5 p6 p7 p8   , P0 P1 P2 P3 P4 P5 P6 P7 P8   )
TCASE(8, p0 p1 p2 p3 p4 p5 p6 p7 p8   , P0 P1 P2 P3 P4 P5 P6 P7 P8   )
TCASE(9, p0 p1 p2 p3 p4 p5 p6 p7 p8 p9, P0 P1 P2 P3 P4 P5 P6 P7 P8 P9)
TCASE(9, p0 p1 p2 p3 p4 p5 p6 p7 p8 p9, P0 P1 P2 P3 P4 P5 P6 P7 P8 P9)
 
 
int main(void)
int main(void)
{
{
  TEST(0);
  TEST(0);
  TEST(1);
  TEST(1);
  TEST(2);
  TEST(2);
  TEST(3);
  TEST(3);
  TEST(4);
  TEST(4);
  TEST(5);
  TEST(5);
  TEST(6);
  TEST(6);
  TEST(7);
  TEST(7);
  TEST(8);
  TEST(8);
  TEST(9);
  TEST(9);
 
 
  if (errors)
  if (errors)
    abort ();
    abort ();
  exit (0);
  exit (0);
}
}
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.