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 target/58901] vax bootstrap fails on subreg reload


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

--- Comment #4 from Martin Husemann <martin at netbsd dot org> ---
I got a quick lesson in addressing modes for vax ;-)
It seems the mode = HImode passed to the upper functions in the call stack is
the problem - with HImode we can only use index operands with a factor of 2,
but this rtx has a factor of 4.

The problem starts in alter_subreg(), where the call to adjust_address_1 is
done:

#6  0x002d1a06 in alter_subreg (xp=0x7f0e8bc8, final_p=true, 2131659720, 1)
    at ../../gcc-4.8.2/gcc/final.c:3072
3072            *xp = adjust_address (y, GET_MODE (x), offset);

and x has (due to subreg) HImode:

(gdb) p debug_rtx(x)
(subreg:HI (mem/u/c:SI (plus:SI (mult:SI (reg/v:SI 0 %r0 [orig:81 count ] [81])
                (const_int 4 [0x4]))
            (symbol_ref:SI ("DECPOWERS") [flags 0x40] <var_decl 0x7f22fe60
DECPOWERS>)) [3 DECPOWERS S4 A32]) 0)
$12 = void
(gdb) p debug_rtx(y)
(mem/u/c:SI (plus:SI (mult:SI (reg/v:SI 0 %r0 [orig:81 count ] [81])
            (const_int 4 [0x4]))
        (symbol_ref:SI ("DECPOWERS") [flags 0x40] <var_decl 0x7f22fe60
DECPOWERS>)) [3 DECPOWERS S4 A32])


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