The problem can be seen in the ev67 failure of 23_containers/vector/cons/4.cc,

        ldah $29,0($26)         !gpdisp!18
        ldq $3,_ZN10__gnu_test10destructor8_M_countE($29)               !literal
        ldq $2,16($9)
        mov $16,$10
        lda $29,0($29)          !gpdisp!18

Note the second instruction uses $29 before it is completely initialized in
the last instruction.

The problem is due to exposing the EH receiver gp load before sched1, but not
exposing the symbol gp use until after reload.  By inspection, the same problem
exists for the builtin_setjmp_receiver patterns, though there is no known test
case.  Presumably it wouldn't be impossible to write one.

By inspection, this problem should exist at least back through 3.3 branch.  I
havn't tried to create a simplified test case with which to show the problem
on that branch.

-- 
           Summary: setjmp and eh receivers can mis-schedule
           Product: gcc
           Version: 4.0.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: target
        AssignedTo: rth at gcc dot gnu dot org
        ReportedBy: rth at gcc dot gnu dot org
                CC: gcc-bugs at gcc dot gnu dot org
GCC target triplet: alpha


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18841

Reply via email to