This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug optimization/13469] [3.4 Regression] IRIX 6.5 O32 libjava bootstrap failure: ICE in verify_local_live_at_start, at flow.c:557


------- Additional Comments From rsandifo at gcc dot gnu dot org  2004-01-06 21:23 -------
Ick.  I'm seeing this too.  It only seems to happen for sjlj exceptions
(i.e., only when using the SGI assembler).  expand_builtin_setjmp_receiver()
creates:

    (use $fp)

which forces the function to save and restore $fp. but isn't enough to
make it to set up a local frame pointer (frame_pointer_needed is 0).

In the end, nothing outside the prologue really uses $fp, so it is
only live on paths from function entry to the USE above.  In other
words, after the prologue, $fp is only live at insn X if there is path
from X to an insn that may throw an exception.

In the test case, we reach the end of reload with two loads from the
same, potentially trapping, MEM.  postreload manages to get rid of the
second MEM, converting the load to a register-to-register move.
Unfortunately, it leaves the REG_EH_REGION note and associated EH edge.

We almost get away with this.  But the cprop pass manages to delete
the move, along with its EH edge.  Since nothing after that can throw
an exception, $fp ends up being unexpected live.

Does this sound familiar to anyone?  The attached patch seems to get
past the initial failure, but I'm not not sure whether it's right.

Richard


-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |rsandifo at gcc dot gnu dot
                   |                            |org


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]