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