diff options
author | Andrey Belevantsev <abel@ispras.ru> | 2012-08-09 18:08:31 +0400 |
---|---|---|
committer | Andrey Belevantsev <abel@gcc.gnu.org> | 2012-08-09 18:08:31 +0400 |
commit | 0c02ab396ed1385ee0fc14c534fcfe36dbe11675 (patch) | |
tree | a145593be9727c2b55c552211e1c27d86799eb93 /gcc/testsuite | |
parent | 82ad0aaf6e6d671b8dab3fd9ae3b496f1c70aea7 (diff) | |
download | gcc-0c02ab396ed1385ee0fc14c534fcfe36dbe11675.zip gcc-0c02ab396ed1385ee0fc14c534fcfe36dbe11675.tar.gz gcc-0c02ab396ed1385ee0fc14c534fcfe36dbe11675.tar.bz2 |
re PR rtl-optimization/53701 (ICE on ia64 (when building Allegro 4.4) in sel-sched)
PR rtl-optimization/53701
* sel-sched.c (vinsn_vec_has_expr_p): Clarify function comment.
Process not only expr's vinsns but all old vinsns from expr's
history of changes.
(update_and_record_unavailable_insns): Clarify comment.
* gcc.dg/pr53701.c: New test.
From-SVN: r190253
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr53701.c | 59 |
2 files changed, 64 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7dcf7d7..1ac24cd 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-08-09 Andrey Belevantsev <abel@ispras.ru> + + PR rtl-optimization/53701 + * gcc.dg/pr53701.c: New test. + 2012-08-09 Bernd Schmidt <bernds@codesourcery.com> * gcc.c-torture/compile/20120727-1.c: New test. diff --git a/gcc/testsuite/gcc.dg/pr53701.c b/gcc/testsuite/gcc.dg/pr53701.c new file mode 100644 index 0000000..2c85223 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr53701.c @@ -0,0 +1,59 @@ +/* { dg-do compile { target powerpc*-*-* ia64-*-* i?86-*-* x86_64-*-* } } */ +/* { dg-options "-O3 -fselective-scheduling2 -fsel-sched-pipelining" } */ +typedef unsigned short int uint16_t; +typedef unsigned long int uintptr_t; +typedef struct GFX_VTABLE +{ + int color_depth; + unsigned char *line[]; +} +BITMAP; +extern int _drawing_mode; +extern BITMAP *_drawing_pattern; +extern int _drawing_y_anchor; +extern unsigned int _drawing_x_mask; +extern unsigned int _drawing_y_mask; +extern uintptr_t bmp_write_line (BITMAP *, int); + void +_linear_hline15 (BITMAP * dst, int dx1, int dy, int dx2, int color) +{ + int w; + if (_drawing_mode == 0) + { + int x, curw; + unsigned short *sline = + (unsigned short *) (_drawing_pattern-> + line[((dy) - + _drawing_y_anchor) & _drawing_y_mask]); + unsigned short *s; + unsigned short *d = + ((unsigned short *) (bmp_write_line (dst, dy)) + (dx1)); + s = ((unsigned short *) (sline) + (x)); + if (_drawing_mode == 2) + { + } + else if (_drawing_mode == 3) + { + do + { + w -= curw; + do + { + unsigned long c = (*(s)); + if (!((unsigned long) (c) == 0x7C1F)) + { + (*((uint16_t *) ((uintptr_t) (d))) = ((color))); + } + ((s)++); + } + while (--curw > 0); + s = sline; + curw = + (((w) < + ((int) _drawing_x_mask + + 1)) ? (w) : ((int) _drawing_x_mask + 1)); + } + while (curw > 0); + } + } +} |