aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/20011008-3.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.9/gcc/testsuite/gcc.c-torture/execute/20011008-3.c')
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.c-torture/execute/20011008-3.c105
1 files changed, 105 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/20011008-3.c b/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/20011008-3.c
new file mode 100644
index 000000000..3244b0a97
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/20011008-3.c
@@ -0,0 +1,105 @@
+extern void exit (int);
+extern void abort (void);
+
+typedef unsigned int u_int32_t;
+typedef unsigned char u_int8_t;
+typedef int int32_t;
+
+typedef enum {
+ TXNLIST_DELETE,
+ TXNLIST_LSN,
+ TXNLIST_TXNID,
+ TXNLIST_PGNO
+} db_txnlist_type;
+
+struct __db_lsn; typedef struct __db_lsn DB_LSN;
+struct __db_lsn {
+ u_int32_t file;
+ u_int32_t offset;
+};
+struct __db_txnlist; typedef struct __db_txnlist DB_TXNLIST;
+
+struct __db_txnlist {
+ db_txnlist_type type;
+ struct { struct __db_txnlist *le_next; struct __db_txnlist **le_prev; } links;
+ union {
+ struct {
+ u_int32_t txnid;
+ int32_t generation;
+ int32_t aborted;
+ } t;
+ struct {
+
+
+ u_int32_t flags;
+ int32_t fileid;
+ u_int32_t count;
+ char *fname;
+ } d;
+ struct {
+ int32_t ntxns;
+ int32_t maxn;
+ DB_LSN *lsn_array;
+ } l;
+ struct {
+ int32_t nentries;
+ int32_t maxentry;
+ char *fname;
+ int32_t fileid;
+ void *pgno_array;
+ u_int8_t uid[20];
+ } p;
+ } u;
+};
+
+int log_compare (const DB_LSN *a, const DB_LSN *b)
+{
+ return 1;
+}
+
+
+int
+__db_txnlist_lsnadd(int val, DB_TXNLIST *elp, DB_LSN *lsnp, u_int32_t flags)
+{
+ int i;
+
+ for (i = 0; i < (!(flags & (0x1)) ? 1 : elp->u.l.ntxns); i++)
+ {
+ int __j;
+ DB_LSN __tmp;
+ val++;
+ for (__j = 0; __j < elp->u.l.ntxns - 1; __j++)
+ if (log_compare(&elp->u.l.lsn_array[__j], &elp->u.l.lsn_array[__j + 1]) < 0)
+ {
+ __tmp = elp->u.l.lsn_array[__j];
+ elp->u.l.lsn_array[__j] = elp->u.l.lsn_array[__j + 1];
+ elp->u.l.lsn_array[__j + 1] = __tmp;
+ }
+ }
+
+ *lsnp = elp->u.l.lsn_array[0];
+ return val;
+}
+
+#if defined (STACK_SIZE) && STACK_SIZE < 12350
+#define VLEN (STACK_SIZE/10)
+#else
+#define VLEN 1235
+#endif
+
+int main (void)
+{
+ DB_TXNLIST el;
+ DB_LSN lsn, lsn_a[VLEN];
+
+ el.u.l.ntxns = VLEN-1;
+ el.u.l.lsn_array = lsn_a;
+
+ if (__db_txnlist_lsnadd (0, &el, &lsn, 0) != 1)
+ abort ();
+
+ if (__db_txnlist_lsnadd (0, &el, &lsn, 1) != VLEN-1)
+ abort ();
+
+ exit (0);
+}