------- Additional Comments From jakub at redhat dot com  2005-08-09 17:27 
-------
The problem is in insert_insn_end_bb.
That function is called to hoist the common expression to the end of bb0.
But, bb0 ends with a call that can throw, so insert_insn_end_bb decides not
to put it after the call, but before it and load of its parameters.
And that's the problem here, because that callee's argument (this) is the
same as caller's argument (this) and CSE already removed that parameter load
(as the argument is in r3 already from the entry block).  insert_insn_end_bb
keeps searching for parameter loads, until it reaches the beginning
of the bb0 and inserts it there, without checking whether it crosses any
setter of pseudos it uses.


-- 


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

Reply via email to