From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 4461B383F868; Wed, 3 Jun 2020 13:37:10 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 4461B383F868 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1591191430; bh=rBYCYuZzTjqsP0PNGdoQwA2HhJfkj76a0Coi5ngXMhI=; h=From:To:Subject:Date:In-Reply-To:References:From; b=cxTs3yaQrl5cxVrHR5gypLrtogtN4n7+K2YvezBQ2L4p40T2KFeSs+/GJbyU2ccFS eUpeUittQpMZKsJqxAA6pLU6Ml8z545Qtlbj89LKWvw/8Hw4wy28k+uZmkNdJV/tyq iy3W8vXGyV4y83kI7coLz9ycSL3Rs1fW9T+ZbPG4= From: "rguenth at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug tree-optimization/95487] [10/11 Regression] ICE: verify_gimple failed (error: invalid vector types in nop conversion) with -O3 -march=skylake-avx512 since r10-1052-gc29c92c789d93848 Date: Wed, 03 Jun 2020 13:37:10 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: tree-optimization X-Bugzilla-Version: 11.0 X-Bugzilla-Keywords: ice-on-valid-code X-Bugzilla-Severity: normal X-Bugzilla-Who: rguenth at gcc dot gnu.org X-Bugzilla-Status: ASSIGNED X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: rguenth at gcc dot gnu.org X-Bugzilla-Target-Milestone: 10.2 X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-BeenThere: gcc-bugs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-bugs mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 Jun 2020 13:37:10 -0000 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D95487 --- Comment #5 from Richard Biener --- We also fail to unswitch the outer loop on if (d) (probably simply because = we don't unswitch outer loops). It's likely the invariantness of the condition that makes the problem. We're vectorizing [local count: 437450365]: # b_43 =3D PHI _46 =3D (int) b_43; _65 =3D &g[_46]; .MASK_STORE (_65, 32B, d.0_2, 0); b.3_25 =3D (unsigned short) b_43; _33 =3D b.3_25 + 2; b_24 =3D (short int) _33; if (b_24 >=3D 0) goto ; [11.00%] else goto ; [89.00%] [local count: 389330825]: goto ; [100.00%] where we use a scatter because we fail to analyze the evolution for g[b]. We don't get a vector boolean type for the mask because the "magic" here doesn't work this way. 1508 else if (VECT_SCALAR_BOOLEAN_TYPE_P (TREE_TYPE (op)) 1509 && VECTOR_BOOLEAN_TYPE_P (stmt_vectype)) 1510 vector_type =3D truth_type_for (stmt_vectype); which does not consider that the mask in scatters might need a vector boolean type. But it appearantly does. Test coverage for this code seems to be non-existent though :/ I do have a patch that fixes the testcase though.=