Bugzilla – Bug 312256
[mini] register allocation problem in exception handlers
Last modified: 2007-09-15 21:24:46 UTC
---- Reported by vargaz@freemail.hu 2003-04-30 05:58:57 MST ---- The attached test case illustrates a register allocation problem: the code in the exception handler thinks %EDI holds the domain pointer, which is not true. You have to run the testcase with --optimize=shared to see the problem. I reported this earlier by mail but it seems to have been forgotten. ---- Additional Comments From vargaz@freemail.hu 2003-04-30 05:59:32 MST ---- Created an attachment (id=164645) testcase ---- Additional Comments From lupus@ximian.com 2003-04-30 10:32:02 MST ---- The issue here is that the liveness code seems to not take into account the possibility that control flow jumps from the middle of a basic block to an exception handler. I guess this may happen in non-shared code, too. The fix may be to extend the lifeness of a variable that is used in the exception handlers to the whole region of code the handler refers to, if the variable was used outside. The change is too big to do just before a release, though. ---- Additional Comments From vargaz@freemail.hu 2003-04-30 16:44:08 MST ---- A temporary workaround would be to disable the register allocator on methods which contain exception handlers. ---- Additional Comments From lupus@ximian.com 2003-05-02 12:37:42 MST ---- The workaround is in cvs. ---- Additional Comments From vargaz@freemail.hu 2004-02-26 09:39:57 MST ---- Fixed in CVS. Imported an attachment (id=164645)