https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114729
--- Comment #19 from Vineet Gupta <vineetg at gcc dot gnu.org> --- For last several weeks I've been working on various tweaks to address the model schedule issue. It seems conceptually really simple, something along the lines of following: for (;;) { FOR_EACH_DEP (insn->insn, SD_LIST_HARD_BACK, sd_it, dep) if (pro->insn && pro->model_priority < insn->model_priority && QUEUE_INDEX (pro->insn) != QUEUE_SCHEDULED) { - pro->model_priority = model_next_priority; if (QUEUE_INDEX (pro->insn) == QUEUE_READY) { + if (DEP_TYPE (dep) == REG_DEP_TRUE) + pro->model_priority = model_new_priority; However adding the priority distinction has been really tricky: subtle changes tend to lead to infinite looping. I've tried numerous approaches: - tracking true deps separately than existing overall unscheduled deps. - Preventing recursion from adding same list multiple times. A working version which bootstrapped the toolchain, fixed the reduced test, caused severe spills regression in actual cactu build.