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 #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


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