This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: MIPS/haifa glitch
Jason
Jason Eckhardt wrote:
>
> Tuning scheduling for a new mips variant revealed this haifa glitch.
>
> * haifa-sched.c (schedule_insns): Never emit a NOTE_INSN_DELETED
> before a barrier.
>
> Index: haifa-sched.c
> ===================================================================
> RCS file: /cvs/gcc/egcs/gcc/haifa-sched.c,v
> retrieving revision 1.155
> diff -c -3 -p -r1.155 haifa-sched.c
> *** haifa-sched.c 2000/06/13 22:23:49 1.155
> --- haifa-sched.c 2000/07/16 00:28:38
> *************** schedule_insns (dump_file)
> *** 6990,6997 ****
> && GET_CODE (insn) != CODE_LABEL
> /* Don't emit a NOTE if it would end up between an unconditional
> jump and a BARRIER. */
> ! && !(GET_CODE (insn) == JUMP_INSN
> ! && GET_CODE (NEXT_INSN (insn)) == BARRIER)))
> emit_note_after (NOTE_INSN_DELETED, BLOCK_END (n_basic_blocks - 1));
>
> /* Compute INSN_REG_WEIGHT for all blocks. We must do this before
> --- 6990,6996 ----
> && GET_CODE (insn) != CODE_LABEL
> /* Don't emit a NOTE if it would end up between an unconditional
> jump and a BARRIER. */
> ! && ! GET_CODE (NEXT_INSN (insn)) == BARRIER))
> emit_note_after (NOTE_INSN_DELETED, BLOCK_END (n_basic_blocks - 1));
>
> /* Compute INSN_REG_WEIGHT for all blocks. We must do this before
I think you are missing a pair of parenthesis (i.e. shouldn't it be)
> ! && ! (GET_CODE (NEXT_INSN (insn)) == BARRIER)))
Graham