http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58901
--- Comment #1 from Martin Husemann <martin at netbsd dot org> --- The real question is: why does memory_address_addr_space_p() return false for this rtx. Stepping into it results in: 0x007618be in vax_legitimate_address_p (mode=HImode, x=0x7ea0fd2c, strict=20, 5, 2124479788, 0) at ../../gcc-4.8.2/gcc/config/vax/vax.c:1801 1801 vax_legitimate_address_p (enum machine_mode mode, rtx x, bool strict) (gdb) n 1805 if (nonindexed_address_p (x, strict)) (gdb) print mode $4 = HImode (gdb) p debug_rtx(x) (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>)) $5 = void (gdb) p strict $6 = false (gdb) n 1808 if (GET_CODE (x) != PLUS) (gdb) 1813 xfoo0 = XEXP (x, 0); (gdb) 1814 xfoo1 = XEXP (x, 1); (gdb) 1816 if (index_term_p (xfoo0, mode, strict) (gdb) 1826 if (indexable_address_p (xfoo0, xfoo1, mode, strict) (gdb) 1830 return false; with a backtrace: #0 vax_legitimate_address_p (mode=HImode, x=0x7ea0fd2c, strict=false, 5, 2124479788, 0) at ../../gcc-4.8.2/gcc/config/vax/vax.c:1830 #1 0x0052049a in default_addr_space_legitimate_address_p (mode=HImode, mem=0x7ea0fd2c, strict=false, as=0 '\000', 5, 2124479788, 0, 0) at ../../gcc-4.8.2/gcc/targhooks.c:1175 #2 0x004aa683 in memory_address_addr_space_p (mode=HImode, addr=0x7ea0fd2c, as=0 '\000', 5, 2124479788, 0) at ../../gcc-4.8.2/gcc/recog.c:1299 #3 0x00295454 in change_address_1 (memref=0x7ea2d560, mode=HImode, addr=0x7ea0fd2c, validate=1, 2124600672, 5, 2124479788, 1) at ../../gcc-4.8.2/gcc/emit-rtl.c:2019 and, as expected: (gdb) p debug_rtx(xfoo0) (mult:SI (reg/v:SI 0 %r0 [orig:81 count ] [81]) (const_int 4 [0x4])) $7 = void (gdb) p debug_rtx(xfoo1) (symbol_ref:SI ("DECPOWERS") [flags 0x40] <var_decl 0x7f22fe60 DECPOWERS>) $8 = void