aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/gcc.c-torture/compile/pr19080.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.9/gcc/testsuite/gcc.c-torture/compile/pr19080.c')
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.c-torture/compile/pr19080.c115
1 files changed, 115 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/gcc.c-torture/compile/pr19080.c b/gcc-4.9/gcc/testsuite/gcc.c-torture/compile/pr19080.c
new file mode 100644
index 000000000..b5686b80b
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.c-torture/compile/pr19080.c
@@ -0,0 +1,115 @@
+typedef union { int ioport; volatile char *maddr; } bus_space_handle_t;
+struct scb { unsigned short *hscb; };
+struct ahd_softc
+{
+ int tags[2];
+ bus_space_handle_t bshs[2];
+ int dst_mode;
+ int src_mode;
+ int flags;
+};
+void outb(int, int);
+
+int foo_inb(struct ahd_softc*);
+int foo_int_int (int, int);
+int ahd_inb(struct ahd_softc*);
+int ahd_scb_active_in_fifo (void);
+
+void ahd_flush_qoutfifo (struct ahd_softc *ahd, struct scb *scb)
+{
+ int src, dst, *a = &src, *b = &dst; *a = 1, *b = 1;
+ int bb, p;
+
+ if (ahd->src_mode == 1)
+ { int src, dst, *a = &src, *b = &dst; *a = 1, *b = 1;}
+ foo_int_int (ahd->src_mode, ahd->dst_mode);
+ p = 1;
+ if (ahd->src_mode == 2 && ahd->dst_mode == p)
+ {
+ if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
+ outb (1, ahd->bshs[0].ioport );
+ if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
+ outb (1, ahd->bshs[0].ioport );
+ }
+ ahd->src_mode = 1;
+ ahd->dst_mode = 2;
+ while ((ahd_inb (ahd) & 0x01) != 0)
+ {
+ p = 1;
+ if (ahd->src_mode == 2 && ahd->dst_mode == p)
+ {
+ if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
+ outb (1, ahd->bshs[0].ioport );
+ if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
+ outb (1, ahd->bshs[0].ioport );
+ }
+ ahd->src_mode = 1;
+ ahd->dst_mode = 2;
+ if (ahd_scb_active_in_fifo () == 0)
+ continue;
+ p = 1;
+ if (ahd->src_mode == 2 && ahd->dst_mode == p)
+ {
+ if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
+ outb (1, ahd->bshs[0].ioport );
+ if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
+ outb (1, ahd->bshs[0].ioport );
+ }
+ ahd->src_mode = 1;
+ ahd->dst_mode = 2;
+ if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
+ outb (1, ahd->bshs[0].ioport );
+ if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
+ outb (1, ahd->bshs[0].ioport );
+ if ((ahd->flags & 1) != 0)
+ foo_inb (ahd);
+ if ((ahd->flags & 1) != 0)
+ foo_inb (ahd);
+ if ((ahd->flags & 1) != 0)
+ foo_inb (ahd);
+ if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
+ outb (1, ahd->bshs[0].ioport );
+ if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
+ outb (1, ahd->bshs[0].ioport );
+ if ((ahd->flags & 1) != 0)
+ foo_inb (ahd);
+ if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
+ outb (1, ahd->bshs[0].ioport );
+ if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
+ outb (1, ahd->bshs[0].ioport );
+ bb = (*(scb->hscb));
+ if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
+ outb (1, ahd->bshs[0].ioport );
+ if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
+ outb (1, ahd->bshs[0].ioport );
+ bb = (*(scb->hscb));
+ if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
+ outb (1, ahd->bshs[0].ioport );
+ if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
+ outb (1, ahd->bshs[0].ioport );
+ }
+ if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
+ outb (1, ahd->bshs[0].ioport );
+ if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
+ outb (1, ahd->bshs[0].ioport );
+ p = 1;
+ if (ahd->src_mode == 2 && ahd->dst_mode == p)
+ {
+ if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
+ outb (1, ahd->bshs[0].ioport );
+ if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
+ outb (1, ahd->bshs[0].ioport );
+ }
+ ahd->src_mode = 1;
+ ahd->dst_mode = 2;
+ if (ahd->src_mode == 2 && ahd->dst_mode == dst)
+ {
+ if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
+ outb (1, ahd->bshs[0].ioport );
+ if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
+ outb (1, ahd->bshs[0].ioport );
+ }
+ ahd->src_mode = 1;
+ ahd->dst_mode = 2;
+ ahd->flags |= 1;
+}