This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: New assert in haifa-sched.c


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]