https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77959

UroŇ° Bizjak <ubizjak at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|target                      |middle-end

--- Comment #4 from UroŇ° Bizjak <ubizjak at gmail dot com> ---
Looks like middle-end problem to me:

Program received signal SIGSEGV, Segmentation fault.
0x0000000000ef2ddb in ix86_decompose_address (addr=0x41,
out=out@entry=0x7fffffffd490) at
/home/uros/gcc-svn/trunk/gcc/config/i386/i386.c:14954
14954     if (TARGET_64BIT && GET_MODE (addr) == DImode)
(gdb) p addr
$10 = (rtx) 0x41

(gdb) bt
#0  0x0000000000ef2ddb in ix86_decompose_address (addr=0x41,
out=out@entry=0x7fffffffd490) at
/home/uros/gcc-svn/trunk/gcc/config/i386/i386.c:14954
#1  0x0000000000ef4ddc in ix86_legitimate_address_p (addr=<optimized out>,
strict=<optimized out>) at
/home/uros/gcc-svn/trunk/gcc/config/i386/i386.c:15668
#2  0x0000000000b1f4af in memory_address_addr_space_p (mode=mode@entry=SFmode,
addr=addr@entry=0x41, as=<optimized out>)
    at /home/uros/gcc-svn/trunk/gcc/recog.c:1336
#3  0x0000000000874930 in adjust_address_1 (memref=memref@entry=0x7fffefdec168,
mode=mode@entry=SFmode, offset=offset@entry=0, validate=validate@entry=1, 
    adjust_address=adjust_address@entry=1, adjust_object=adjust_object@entry=0,
size=4) at /home/uros/gcc-svn/trunk/gcc/emit-rtl.c:2221
#4  0x00000000008b3d1c in store_field (target=0x7fffefdec168, bitsize=32,
bitpos=0, bitregion_start=<optimized out>, bitregion_end=<optimized out>,
mode=SFmode, 
    exp=0x7fffeffd8c48, alias_set=2, nontemporal=false, reverse=false) at
/home/uros/gcc-svn/trunk/gcc/expr.c:6938
#5  0x00000000008afd2f in expand_assignment (to=to@entry=0x7fffeffc4a60,
from=from@entry=0x7fffeffd8c48, nontemporal=<optimized out>)
    at /home/uros/gcc-svn/trunk/gcc/expr.c:5167
#6  0x000000000079c6ee in expand_gimple_stmt_1 (stmt=0x7fffeffc88c0) at
/home/uros/gcc-svn/trunk/gcc/cfgexpand.c:3649

(gdb) f 3
#3  0x0000000000874930 in adjust_address_1 (memref=memref@entry=0x7fffefdec168,
mode=mode@entry=SFmode, offset=offset@entry=0, validate=validate@entry=1, 
    adjust_address=adjust_address@entry=1, adjust_object=adjust_object@entry=0,
size=4) at /home/uros/gcc-svn/trunk/gcc/emit-rtl.c:2221
2221          && (!validate || memory_address_addr_space_p (mode, addr,
(gdb) list
2216        size = defattrs->size;
2217
2218      /* If there are no changes, just return the original memory
reference.  */
2219      if (mode == GET_MODE (memref) && !offset
2220          && (size == 0 || (attrs.size_known_p && attrs.size == size))
2221          && (!validate || memory_address_addr_space_p (mode, addr,
2222                                                        attrs.addrspace)))
2223        return memref;
2224
2225      /* ??? Prefer to create garbage instead of creating shared rtl.
(gdb) p addr
$8 = (rtx) 0x41

Corrupted RTX is passed from adjust_address_1.

Reply via email to