This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/67609] [5/6 Regression] Generates wrong code for SSE2 _mm_load_pd
- From: "rguenth at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Thu, 17 Sep 2015 12:51:45 +0000
- Subject: [Bug target/67609] [5/6 Regression] Generates wrong code for SSE2 _mm_load_pd
- Auto-submitted: auto-generated
- References: <bug-67609-4 at http dot gcc dot gnu dot org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67609
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target| |x86_64-*-*
Status|UNCONFIRMED |NEW
Known to work| |4.9.3
Keywords| |ra, wrong-code
Last reconfirmed| |2015-09-17
Component|regression |target
CC| |uros at gcc dot gnu.org,
| |vmakarov at gcc dot gnu.org
Ever confirmed|0 |1
Summary|[Regression] Generates |[5/6 Regression] Generates
|wrong code for SSE2 |wrong code for SSE2
|_mm_load_pd |_mm_load_pd
Target Milestone|--- |5.3
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
;; MEM[(__m128d * {ref-all})&v] = reg.0_2;
(insn 6 5 0 (set (reg/v:TI 90 [ v ])
(mem/c:TI (symbol_ref:DI ("reg") [flags 0x2] <var_decl 0x7fba2a03eb40
reg>) [0 reg+0 S16 A128]))
/abuild/rguenther/trunk-g/gcc/include/emmintrin.h:161 -1
(nil))
;; v[0] = b_4(D);
(insn 7 6 0 (set (subreg:DF (reg/v:TI 90 [ v ]) 0)
(reg/v:DF 88 [ b ])) t.c:7 -1
(nil))
;; reg = _6;
(insn 8 7 0 (set (mem/c:V2DF (symbol_ref:DI ("reg") [flags 0x2] <var_decl
0x7fba2a03eb40 reg>) [0 reg+0 S16 A128])
(subreg:V2DF (reg/v:TI 90 [ v ]) 0)) t.c:8 -1
(nil))
the subreg set is expected to preserve the upper part. It later gets
later assigned *movdf_internal - so eventually we'd have expected
a lowpart instead. Not sure about bigger-than wordmode regs and subregs...
GCC 4.9 and before go through the stack extensively (otherwise identical
GIMPLE IL and RTL expansion though). So it looks like a backend
(pattern constraints?) or RA related bug (the issue appears after IRA/reload).