re PR target/5309 (Infinite loop in cc1 on sparcv9-sun-solaris2.8 with -m64, short example)
PR target/5309: * config/sparc/sparc.c (ultrasparc_adjust_cost): Handle TYPE_IDIV the same way as TYPE_IMUL. (ultrasparc_sched_reorder): Likewise. * config/sparc/sparc.md (type): Add comment to update ultrasparc_sched_reorder when making changes. * gcc.dg/ultrasp4.c: New test. From-SVN: r48917
This commit is contained in:
parent
1e4e4df27a
commit
b8c1a6b817
@ -1,3 +1,12 @@
|
||||
2002-01-16 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR target/5309:
|
||||
* config/sparc/sparc.c (ultrasparc_adjust_cost): Handle TYPE_IDIV the
|
||||
same way as TYPE_IMUL.
|
||||
(ultrasparc_sched_reorder): Likewise.
|
||||
* config/sparc/sparc.md (type): Add comment to update
|
||||
ultrasparc_sched_reorder when making changes.
|
||||
|
||||
2002-01-16 Kazu Hirata <kazu@hxi.com>
|
||||
|
||||
* doc/invoke.texi: Change the dump file name of block
|
||||
|
@ -7202,7 +7202,7 @@ ultrasparc_adjust_cost (insn, link, dep_insn, cost)
|
||||
/* Nothing issues in parallel with integer multiplies, so
|
||||
mark as zero cost since the scheduler can not do anything
|
||||
about it. */
|
||||
if (insn_type == TYPE_IMUL)
|
||||
if (insn_type == TYPE_IMUL || insn_type == TYPE_IDIV)
|
||||
return 0;
|
||||
|
||||
#define SLOW_FP(dep_type) \
|
||||
@ -7902,7 +7902,7 @@ ultrasparc_sched_reorder (dump, sched_verbose, ready, n_ready)
|
||||
{
|
||||
/* If the pipeline is (still) empty and we have any single
|
||||
group insns, get them out now as this is a good time. */
|
||||
rtx *ip = ultra_find_type ((TMASK (TYPE_RETURN) |
|
||||
rtx *ip = ultra_find_type ((TMASK (TYPE_RETURN) | TMASK (TYPE_IDIV) |
|
||||
TMASK (TYPE_IMUL) | TMASK (TYPE_CMOVE) |
|
||||
TMASK (TYPE_MULTI) | TMASK (TYPE_MISC)),
|
||||
ready, this_insn);
|
||||
|
@ -82,6 +82,7 @@
|
||||
|
||||
;; Insn type.
|
||||
|
||||
;; If you add any new type here, please update ultrasparc_sched_reorder too.
|
||||
(define_attr "type"
|
||||
"ialu,compare,shift,load,sload,store,uncond_branch,branch,call,sibcall,call_no_delay_slot,return,imul,idiv,fpload,fpstore,fp,fpmove,fpcmove,fpcmp,fpmul,fpdivs,fpdivd,fpsqrts,fpsqrtd,cmove,multi,misc"
|
||||
(const_string "ialu"))
|
||||
|
@ -1,3 +1,7 @@
|
||||
2002-01-16 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* gcc.dg/ultrasp4.c: New test.
|
||||
|
||||
2002-01-16 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* gcc.dg/20020116-2.c: New test.
|
||||
|
13
gcc/testsuite/gcc.dg/ultrasp4.c
Normal file
13
gcc/testsuite/gcc.dg/ultrasp4.c
Normal file
@ -0,0 +1,13 @@
|
||||
/* Simplified from PR target/5309. */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2" } */
|
||||
/* { dg-options "-O2 -m64 -mcpu=ultrasparc" { target sparc64-*-* } } */
|
||||
/* { dg-options "-O2 -m64 -mcpu=ultrasparc" { target sparcv9-*-* } } */
|
||||
/* { dg-options "-O2" { target sparc-*-solaris2.[0-6] } } */
|
||||
/* { dg-options "-O2" { target sparc-*-solaris2.[0-6].* } } */
|
||||
|
||||
long bar (unsigned int);
|
||||
long foo (long x, unsigned int y)
|
||||
{
|
||||
return *(((long *) (bar (y) - 1)) + 1 + (x >> 2) % 359);
|
||||
}
|
Loading…
Reference in New Issue
Block a user