This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/77959] ICE in ix86_decompose_address, at i386/i386.c:14954
- From: "ubizjak at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 12 Oct 2016 19:51:04 +0000
- Subject: [Bug middle-end/77959] ICE in ix86_decompose_address, at i386/i386.c:14954
- Auto-submitted: auto-generated
- References: <bug-77959-4@http.gcc.gnu.org/bugzilla/>
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.