Commit b8c1a6b8 by Jakub Jelinek Committed by Jakub Jelinek

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
parent 1e4e4df2
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> 2002-01-16 Kazu Hirata <kazu@hxi.com>
* doc/invoke.texi: Change the dump file name of block * doc/invoke.texi: Change the dump file name of block
......
...@@ -7202,7 +7202,7 @@ ultrasparc_adjust_cost (insn, link, dep_insn, cost) ...@@ -7202,7 +7202,7 @@ ultrasparc_adjust_cost (insn, link, dep_insn, cost)
/* Nothing issues in parallel with integer multiplies, so /* Nothing issues in parallel with integer multiplies, so
mark as zero cost since the scheduler can not do anything mark as zero cost since the scheduler can not do anything
about it. */ about it. */
if (insn_type == TYPE_IMUL) if (insn_type == TYPE_IMUL || insn_type == TYPE_IDIV)
return 0; return 0;
#define SLOW_FP(dep_type) \ #define SLOW_FP(dep_type) \
...@@ -7902,7 +7902,7 @@ ultrasparc_sched_reorder (dump, sched_verbose, ready, n_ready) ...@@ -7902,7 +7902,7 @@ ultrasparc_sched_reorder (dump, sched_verbose, ready, n_ready)
{ {
/* If the pipeline is (still) empty and we have any single /* If the pipeline is (still) empty and we have any single
group insns, get them out now as this is a good time. */ 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_IMUL) | TMASK (TYPE_CMOVE) |
TMASK (TYPE_MULTI) | TMASK (TYPE_MISC)), TMASK (TYPE_MULTI) | TMASK (TYPE_MISC)),
ready, this_insn); ready, this_insn);
......
...@@ -82,6 +82,7 @@ ...@@ -82,6 +82,7 @@
;; Insn type. ;; Insn type.
;; If you add any new type here, please update ultrasparc_sched_reorder too.
(define_attr "type" (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" "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")) (const_string "ialu"))
......
2002-01-16 Jakub Jelinek <jakub@redhat.com> 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. * gcc.dg/20020116-2.c: New test.
2002-01-15 Geoffrey Keating <geoffk@redhat.com> 2002-01-15 Geoffrey Keating <geoffk@redhat.com>
......
/* 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);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment