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 }