diff options
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr42249.c | 37 |
2 files changed, 42 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0478ae577bc..a407fb72536 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-01-14 Alexander Monakov <amonakov@ispras.ru> + + PR rtl-optimization/42294 + * gcc.dg/pr42249.c: New. + 2010-01-14 Jakub Jelinek <jakub@redhat.com> PR c/42721 diff --git a/gcc/testsuite/gcc.dg/pr42249.c b/gcc/testsuite/gcc.dg/pr42249.c new file mode 100644 index 00000000000..21708749d5a --- /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)))); +} + |