Compiled with -noass, fault disappears with -noarray.
Source in I:BUG.
Code is from 3.0c, but v2 gets it wrong too.
    1  %begin
    2  %recordformat f(%integer d,%record(f)%name prev,next)
    3  %record(f)%namearray r(1:3)
    4  %integer i=1,j=2,k=3
    5    r(i)_prev_next == r(j)                 {it gets this one right}
    MOVE.L  j,D0                 : 202F 0004
    LEA     216,A0               : 41FA 0002
    BSR     INDEX                : 6100 004E
    LEA     r,A0                 : 41EF 000C
    ADDA.L  D0,A0                : D1C0
    MOVE.L  A0,-(A7)             : 2F08
    MOVE.L  i,D0                 : 202F 000C
    LEA     216,A0               : 41FA 0002
    BSR     INDEX                : 6100 004E
    MOVEA.L (A7)+,A0             : 205F
    LEA     r,A1                 : 43EF 000C
    ADDA.L  D0,A1                : D3C0
    MOVEA.L 0(A1),A1             : 2251
    MOVEA.L 4(A1),A2             : 2469 0004
    MOVE.L  0(A0),8(A2)          : 2550 0008
    6    r(k)_prev_next == r(k)                 {and this one wrong}
    MOVE.L  k,D0                 : 2017
    LEA     216,A0               : 41FA 0002
    BSR     INDEX                : 6100 004E
    LEA     r,A0                 : 41EF 000C
    ADDA.L  D0,A0                : D1C0
    MOVE.L  A0,-(A7)             : 2F08
    MOVE.L  k,D0                 : 202F 0004
    LEA     216,A0               : 41FA 0002
    BSR     INDEX                : 6100 004E
    MOVEA.L (A7)+,A0             : 205F
    LEA     r,A1                 : 43EF 000C
    ADDA.L  D0,A1                : D3C0
    MOVEA.L 0(A1),A1             : 2251
    MOVEA.L 4(A1),A2             : 2469 0004
    MOVE.L  0(A1),8(A2)          : 2551 0008    {here: A1 should be A0}
    7  %end
