From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 82819 invoked by alias); 18 Jun 2015 16:20:25 -0000 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 Received: (qmail 82764 invoked by uid 48); 18 Jun 2015 16:20:21 -0000 From: "wschmidt at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug target/65914] [6 Regression] error: unrecognizable insn Date: Thu, 18 Jun 2015 16:20:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: target X-Bugzilla-Version: 6.0 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: wschmidt at gcc dot gnu.org X-Bugzilla-Status: NEW X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: 6.0 X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-SW-Source: 2015-06/txt/msg01664.txt.bz2 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65914 --- Comment #6 from Bill Schmidt --- The tree-optimized dump shows: void foo() () { vector(2) long unsigned int vect_cst_.60; vector(2) long unsigned int vect_cst_.59; vector(2) long unsigned int vect_cst_.58; struct A p1; const struct A D.3509; int p1; int p1; const struct A D.3508; struct A p1; struct expression D.3507; long unsigned int _5; long unsigned int _6; long unsigned int _8; long unsigned int _11; long unsigned int _18; long unsigned int _19; : _18 = (long unsigned int) &p1; _19 = (long unsigned int) &p1; vect_cst_.60_20 = {_19, _18}; _6 = (long unsigned int) &D.3509; _5 = (long unsigned int) &p1; vect_cst_.59_17 = {_5, _6}; _11 = (long unsigned int) &D.3508; _8 = (long unsigned int) &p1; vect_cst_.58_7 = {_8, _11}; D.3509 ={v} {CLOBBER}; D.3508 ={v} {CLOBBER}; MEM[(struct &)&D.3507] ={v} {CLOBBER}; MEM[(const struct A & *)&D.3507] = vect_cst_.60_20; MEM[(const struct A & *)&D.3507 + 16B] = vect_cst_.59_17; MEM[(const struct A & *)&D.3507 + 32B] = vect_cst_.58_7; operator/, expression, A, void, void>, void, void>, expression, void, voi\ d>, void, void>, void, void, double> (D.3507, 1.0000000000000000555111512312578\ 27021181583404541015625e-1); return; } The problem is that the POWER port doesn't appear to have a pattern to match the vector constructors like: vect_cst_.60_20 = {_19, _18}; The translation into rtl is a (vec_concat:V2DI (reg:DI) (reg:DI)). The closest thing we have to matching this is vsx_concat_ in vsx.md, but IIUC this will only match (vec_concat:V2DF (reg:DF) (reg:DF)) because of the vsx_register_operand restriction. Mike Meissner, can you please confirm?