BZ #118: Alpha codegen broken

Status fields:

creation_ts:2008-12-23 10:52
component:jit
version:unspecified
rep_platform:alpha
op_sys:All
bug_status:RESOLVED
resolution:FIXED
reporter:stefan@complang.tuwien.ac.at
I finally tracked down the cause of these ArrayIndexOutOfBoundsExceptions in dacapo
xalan (see <http://c1.complang.tuwien.ac.at/pipermail/cacao-
testresults/2008-December/006514.html>).

The guilty changeset is this:
<http://mips.complang.tuwien.ac.at/hg/cacao/rev/87efd9870c04>. From the comment: "Don't
use REG_ITMP3 in reg_of_var calls". But that's exactly the problem. In xalan, the
specific instruction that causes trouble is IUSHR. The generated code looks like this:

0x0000020000fdbe38:   a28d0010    ldl     a4,16(s4)
0x0000020000fdbe3c:   4683f01c    and     a4,31,at
0x0000020000fdbe40:   4961f63c    zapnot  s2,15,at
0x0000020000fdbe44:   4b9c069c    srl     at,at,at
0x0000020000fdbe48:   439f001c    addl    at,zero,at
0x0000020000fdbe4c:   b79e0000    stq     at,0(sp)

Using REG_ITMP3 in this specific case (ICMD_IUSHR) fixes xalan. Judging from the comment
in the changeset, this is not a good thing to do, though. So I don't know how to repair
this.

Comment #1 by stefan@complang.tuwien.ac.at on 2008-12-23 11:59:16

http://mips.complang.tuwien.ac.at/hg/cacao/rev/c46f48a94d3b

This fixes xalan. I'm not sure if I spotted every instance of this problem by manual
inspection.

Comment #2 by stefan@complang.tuwien.ac.at on 2008-12-24 13:19:54

Let's declare this fixed.