modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/20011008-3.c (about)

     1  /* { dg-add-options stack_size } */
     2  
     3  extern void exit (int);
     4  extern void abort (void);
     5  
     6  typedef unsigned int u_int32_t;
     7  typedef unsigned char u_int8_t;
     8  typedef int int32_t;
     9  
    10  typedef enum {
    11          TXNLIST_DELETE,
    12          TXNLIST_LSN,
    13          TXNLIST_TXNID,
    14          TXNLIST_PGNO
    15  } db_txnlist_type;
    16  
    17  struct __db_lsn; typedef struct __db_lsn DB_LSN;
    18  struct __db_lsn {
    19          u_int32_t file;
    20          u_int32_t offset;
    21  };
    22  struct __db_txnlist; typedef struct __db_txnlist DB_TXNLIST;
    23  
    24  struct __db_txnlist {
    25          db_txnlist_type type;
    26          struct { struct __db_txnlist *le_next; struct __db_txnlist **le_prev; } links;
    27          union {
    28                  struct {
    29                          u_int32_t txnid;
    30                          int32_t generation;
    31                          int32_t aborted;
    32                  } t;
    33                  struct {
    34  
    35  
    36                          u_int32_t flags;
    37                          int32_t fileid;
    38                          u_int32_t count;
    39                          char *fname;
    40                  } d;
    41                  struct {
    42                          int32_t ntxns;
    43                          int32_t maxn;
    44                          DB_LSN *lsn_array;
    45                  } l;
    46                  struct {
    47                          int32_t nentries;
    48                          int32_t maxentry;
    49                          char *fname;
    50                          int32_t fileid;
    51                          void *pgno_array;
    52                          u_int8_t uid[20];
    53                  } p;
    54          } u;
    55  };
    56  
    57  int log_compare (const DB_LSN *a, const DB_LSN *b)
    58  {
    59    return 1;
    60  }
    61  
    62  
    63  int
    64  __db_txnlist_lsnadd(int val, DB_TXNLIST *elp, DB_LSN *lsnp, u_int32_t flags)
    65  {
    66     int i;
    67   
    68     for (i = 0; i < (!(flags & (0x1)) ? 1 : elp->u.l.ntxns); i++)
    69       {
    70  	int __j;
    71  	DB_LSN __tmp;
    72  	val++; 
    73  	for (__j = 0; __j < elp->u.l.ntxns - 1; __j++)
    74  	  if (log_compare(&elp->u.l.lsn_array[__j], &elp->u.l.lsn_array[__j + 1]) < 0)
    75  	  {
    76  	     __tmp = elp->u.l.lsn_array[__j];
    77  	     elp->u.l.lsn_array[__j] = elp->u.l.lsn_array[__j + 1];
    78  	     elp->u.l.lsn_array[__j + 1] = __tmp;
    79  	  }
    80       }
    81  
    82     *lsnp = elp->u.l.lsn_array[0];
    83     return val;
    84  }
    85  
    86  #if defined (STACK_SIZE) && STACK_SIZE < 12350
    87  #define VLEN (STACK_SIZE/10)
    88  #else
    89  #define VLEN 1235
    90  #endif
    91  
    92  int main (void)
    93  {
    94    DB_TXNLIST el;
    95    DB_LSN lsn, lsn_a[VLEN];
    96    
    97    el.u.l.ntxns = VLEN-1;
    98    el.u.l.lsn_array = lsn_a;
    99    
   100    if (__db_txnlist_lsnadd (0, &el, &lsn, 0) != 1)
   101      abort ();
   102    
   103    if (__db_txnlist_lsnadd (0, &el, &lsn, 1) != VLEN-1)
   104      abort ();
   105    
   106    exit (0);
   107  }