------- Comment #4 from amonakov at gcc dot gnu dot org 2008-09-08 10:38 ------- Scheduling of instructions dependent on speculative loads was implemented a bit differently on sel-sched branch and on trunk (before the merge). Since ia64.c changes were not checked in, a discrepancy appeared, resulting in an ICE when attempting to schedule an instruction dependent on speculative load.
This issue is fixed by restoring the scheduler behaviour to the pre-merge state. This change will have to be reverted when ia64 changes are approved (handling of BE_IN_SPEC bits will be implemented in back-end). Bootstrapped and regtested on ia64-linux. I will add the testcase and re-post to [EMAIL PROTECTED] PR target/37381 * haifa-sched.c (sched_speculate_insn): Filter BE_IN_SPEC bits before passing dependence status to back-end. Index: gcc/haifa-sched.c =================================================================== --- gcc/haifa-sched.c (revision 140093) +++ gcc/haifa-sched.c (working copy) @@ -4288,7 +4288,7 @@ sched_speculate_insn (rtx insn, ds_t req && !(request & BEGIN_SPEC)) return 0; - return targetm.sched.speculate_insn (insn, request, new_pat); + return targetm.sched.speculate_insn (insn, request & BEGIN_SPEC, new_pat); } static int -- amonakov at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at gcc dot gnu |amonakov at gcc dot gnu dot |dot org |org Status|UNCONFIRMED |ASSIGNED Ever Confirmed|0 |1 Last reconfirmed|0000-00-00 00:00:00 |2008-09-08 10:38:12 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37381