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])