This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/69693] Wrong mode is used to load spilled register
- From: "ubizjak at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Fri, 05 Feb 2016 19:31:19 +0000
- Subject: [Bug target/69693] Wrong mode is used to load spilled register
- Auto-submitted: auto-generated
- References: <bug-69693-4 at http dot gcc dot gnu dot org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69693
UroÅ Bizjak <ubizjak at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |vmakarov at gcc dot gnu.org
--- Comment #3 from UroÅ Bizjak <ubizjak at gmail dot com> ---
(In reply to H.J. Lu from comment #2)
> It is a backend bug. We need to add
It is not.
Please see in reload dump, where:
3: r109:DI=[argp:SI+0x8]
Inserting insn reload after:
43: r95:DI=r109:DI
...
15: r111:V2DI=r111:V2DI&r108:DI#0
REG_DEAD r108:DI
REG_DEAD r95:DI
Inserting insn reload before:
45: r111:V2DI=r95:DI#0
Inserting insn reload after:
46: r99:DI#0=r111:V2DI
which results in:
(insn 3 2 43 2 (set (reg/v:DI 2 cx [orig:95 p2 ] [95])
(mem/c:DI (plus:SI (reg/f:SI 7 sp)
(const_int 36 [0x24])) [2 p2+0 S8 A32])) pr69693.c:6 85
{*movdi_internal}
(nil))
(insn 43 3 4 2 (set (mem/c:DI (reg/f:SI 7 sp) [3 %sfp+-16 S8 A128])
(reg/v:DI 2 cx [orig:95 p2 ] [95])) pr69693.c:6 85 {*movdi_internal}
(nil))
...
(insn 45 40 15 3 (set (reg:V2DI 23 xmm2 [111])
(mem/c:V2DI (reg/f:SI 7 sp) [3 %sfp+-16 S16 A128])) pr69693.c:13 1223
{*movv2di_internal}
(nil))
(insn 15 45 46 3 (set (reg:V2DI 23 xmm2 [111])
(and:V2DI (reg:V2DI 23 xmm2 [111])
(reg:V2DI 21 xmm0 [108]))) pr69693.c:13 3471 {*andv2di3}
(nil))
Please note how (insn 45) is accessing uninitialized memory.
Your patch will just paper over the real issue in this particular testcase.