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

Reply via email to