This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/37360] [4.4 Regression] ICE in haifa-sched.c when compiling __popcountsi2 from libgcc
- From: "abel at ispras dot ru" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 5 Sep 2008 10:32:31 -0000
- Subject: [Bug rtl-optimization/37360] [4.4 Regression] ICE in haifa-sched.c when compiling __popcountsi2 from libgcc
- References: <bug-37360-7151@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #13 from abel at ispras dot ru 2008-09-05 10:32 -------
(In reply to comment #12)
> I think it's reasonable to disable the assert with a comment for now and
> file a separate bugreport for the targets who lie about their issue rate.
Ok, with the below patch my failing test case compiles in an identical assembly
as it was compiled before the sel-sched merge. I've also bootstrapped it on
x86_64. If the patch will fix MIPS bootstrap, I think it can be committed as
obvious.
2008-09-05 Andrey Belevantsev <abel@ispras.ru>
PR 37360
* haifa-sched.c (max_issue): Do not assert that we never issue more
insns than issue_rate.
Add comment.
Index: gcc/haifa-sched.c
===================================================================
*** gcc/haifa-sched.c (revision 140031)
--- gcc/haifa-sched.c (working copy)
*************** max_issue (struct ready_list *ready, int
*** 2071,2077 ****
/* Init max_points. */
max_points = 0;
more_issue = issue_rate - cycle_issued_insns;
! gcc_assert (more_issue >= 0);
for (i = 0; i < n_ready; i++)
if (!ready_try [i])
--- 2071,2084 ----
/* Init max_points. */
max_points = 0;
more_issue = issue_rate - cycle_issued_insns;
!
! /* ??? We used to assert here that we never issue more insns than
issue_rate.
! However, some targets (e.g. MIPS/SB1) claim lower issue rate than can be
! achieved to get better performance. Until these targets are fixed to
use
! scheduler hooks to manipulate insns priority instead, the assert should
! be disabled.
!
! gcc_assert (more_issue >= 0); */
for (i = 0; i < n_ready; i++)
if (!ready_try [i])
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37360