summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.c-torture/execute/20011008-3.c
diff options
context:
space:
mode:
authorupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
committerupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
commit554fd8c5195424bdbcabf5de30fdc183aba391bd (patch)
tree976dc5ab7fddf506dadce60ae936f43f58787092 /gcc/testsuite/gcc.c-torture/execute/20011008-3.c
downloadcbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.bz2
cbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.xz
obtained gcc-4.6.4.tar.bz2 from upstream website;upstream
verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository.
Diffstat (limited to 'gcc/testsuite/gcc.c-torture/execute/20011008-3.c')
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/20011008-3.c105
1 files changed, 105 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.c-torture/execute/20011008-3.c b/gcc/testsuite/gcc.c-torture/execute/20011008-3.c
new file mode 100644
index 000000000..6d2a18f64
--- /dev/null
+++ b/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;
+}
+
+#ifndef STACK_SIZE
+#define VLEN 1235
+#else
+#define VLEN (STACK_SIZE/10)
+#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);
+}