This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/58901] vax bootstrap fails on subreg reload
- From: "martin at netbsd dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 30 Oct 2013 19:59:23 +0000
- Subject: [Bug target/58901] vax bootstrap fails on subreg reload
- Auto-submitted: auto-generated
- References: <bug-58901-4 at http dot gcc dot gnu dot org/bugzilla/>
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