------- 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

Reply via email to