New assert in haifa-sched.c

Maxim Kuvyrkov maxim@codesourcery.com
Fri Sep 5 16:19:00 GMT 2008


Adam Nemet wrote:
> haifa-sched.c:
>   2302	      /* Let the target filter the search space.  */
>   2303	      for (i = 1; i < ready->n_ready; i++)
>   2304		if (!ready_try[i])
>   2305		  {
>   2306		    insn = ready_element (ready, i);
>   2307	
>   2308		    gcc_assert (INSN_CODE (insn) >= 0
>   2309				|| recog_memoized (insn) < 0);
> 
> I am hitting this assert with the Octeon pipeline patch.  Isn't the check on
> recog_memoized reversed?  Or are we really asserting here that the insn has
> either been recognized earlier or won't be recognized now either?!

Yes, the assert is really checking exactly that.  Several pieces of 
haifa-sched.c assume that the instruction has been recognized during 
scheduler initialization to speed up checking if instruction is normal 
or some kind of use/clobber/asm.

As max_issue () is one of hot spots in scheduler (and compiler), not 
calling recog_memoized() saves up some time.

If the assert is failing, then something is wrong at initialization stage.

--
Maxim



More information about the Gcc mailing list