From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15766 invoked by alias); 4 Jan 2013 03:39:00 -0000 Received: (qmail 15722 invoked by uid 48); 4 Jan 2013 03:38:41 -0000 From: "pinskia at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug rtl-optimization/55829] [4.8 Regression] ICE: in curr_insn_transform, at lra-constraints.c:3069 with -msse3 Date: Fri, 04 Jan 2013 03:39:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: rtl-optimization X-Bugzilla-Keywords: ice-on-valid-code X-Bugzilla-Severity: normal X-Bugzilla-Who: pinskia at gcc dot gnu.org X-Bugzilla-Status: NEW X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: 4.8.0 X-Bugzilla-Changed-Fields: Status Last reconfirmed Ever Confirmed Message-ID: In-Reply-To: References: X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated Content-Type: text/plain; charset="UTF-8" MIME-Version: 1.0 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2013-01/txt/msg00263.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55829 Andrew Pinski changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2013-01-04 Ever Confirmed|0 |1 --- Comment #1 from Andrew Pinski 2013-01-04 03:38:40 UTC --- Confirmed here is a more reduced testcase: extern double p2[]; extern double ck[]; int chk_pd(void); int sse3_test (void) { int i = 0; int fail = 0; __m128d t1 = (__m128d){*p2, 0}; __m128d t2 = __builtin_ia32_shufpd (t1, t1, 0); double p10 = p2[0]; for (; i < 80; i += 1) { ck[0] = p10; __builtin_ia32_storeupd (p2, t2); fail += chk_pd (); } } --- CUT --- Note the first difference with -fno-expensive-optimizations is the ira dump. Also note if we change t1/t2 into: __m128d t2 = (__m128d){*p2, *p2}; It works. The difference between those two are: (insn 17 13 7 2 (set (reg/v:V2DF 65 [ t2 ]) (vec_concat:V2DF (reg:DF 80 [ D.1764 ]) (reg:DF 80 [ D.1764 ]))) t6.c:11 1467 {*vec_concatv2df} (nil)) (insn 10 9 5 2 (set (reg/v:V2DF 63 [ t2 ]) (vec_duplicate:V2DF (reg:DF 62 [ D.1756 ]))) t6.c:9 1466 {vec_dupv2df} (nil)) Note both of those two RTL are the exactly the same, maybe we should convert the vec_concat of the same value into vec_duplicate but that is a different issue all together and would make this ICE latent.