diff options
Diffstat (limited to 'gcc/testsuite/gcc.dg/pr42249.c')
-rw-r--r-- | gcc/testsuite/gcc.dg/pr42249.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/pr42249.c b/gcc/testsuite/gcc.dg/pr42249.c new file mode 100644 index 000000000..21708749d --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr42249.c @@ -0,0 +1,37 @@ +/* { dg-do compile { target powerpc*-*-* ia64-*-* x86_64-*-* } } */ +/* { dg-options "-O2 -fselective-scheduling -fsel-sched-pipelining" } */ + +typedef struct TypHeader +{ + unsigned long size; + struct TypHeader **ptr; +} *TypHandle; + +extern TypHandle NewBag (unsigned int type, unsigned long size); +typedef unsigned long TypPoint32; + +TypHandle +QuoPP (TypHandle hdL, TypHandle hdR) +{ + TypHandle hdC; + unsigned long degC; + TypPoint32 *ptC; + unsigned long degL; + TypPoint32 *ptL; + unsigned long degR; + TypPoint32 *ptR; + unsigned long p; + + degL = ((hdL)->size) / sizeof (TypPoint32); + degR = ((hdR)->size) / sizeof (TypPoint32); + degC = degL < degR ? degR : degL; + hdC = NewBag (9, (unsigned long) (degC * sizeof (TypPoint32))); + ptC = (TypPoint32 *) ((TypHandle *) ((hdC)->ptr)); + + for (p = 0; p < degC; p++) + ptC[(((p) < (degR)) ? (ptR)[(p)] : (p))] = + ((((((p) < (degL)) ? (ptL)[(p)] : (p))) < + (degR)) ? (ptR)[((((p) < (degL)) ? (ptL)[(p)] : (p)))] + : ((((p) < (degL)) ? (ptL)[(p)] : (p)))); +} + |