diff options
Diffstat (limited to 'gcc/testsuite/gcc.c-torture/compile/pr19080.c')
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/pr19080.c | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr19080.c b/gcc/testsuite/gcc.c-torture/compile/pr19080.c new file mode 100644 index 000000000..b5686b80b --- /dev/null +++ b/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; +} |