From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 3C90C3858D1E; Tue, 3 Jan 2023 16:16:04 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 3C90C3858D1E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1672762564; bh=+SOGiRWAeqv09X9O9WVdWdQQSMYcJtvg/PAVSQsgobA=; h=From:To:Subject:Date:In-Reply-To:References:From; b=AsYt1IBdkEaq+RwNh9CgXeVAB/kv6Jy3LeouTlLf+1zY/pXJ+dM12r1+7ch+VcLeU gBlczsYuOoiAkM+cHb3zSUqGBuC8szxBzkQZsm0A1adKvnTKk14YWvoPOJxtULPZ5/ hkD+jhBU9PzyeXV5tV5ogEBpocfeUGA+DNHI84C0= From: "jakub at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug middle-end/108237] [13 Regression] ICE: in gimple_expand_vec_cond_expr, at gimple-isel.cc:281 at -O since r13-1085-g90467f0ad649d081 Date: Tue, 03 Jan 2023 16:16:03 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: middle-end X-Bugzilla-Version: 13.0 X-Bugzilla-Keywords: ice-on-valid-code X-Bugzilla-Severity: normal X-Bugzilla-Who: jakub 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: 13.0 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 List-Id: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D108237 --- Comment #3 from Jakub Jelinek --- I think the actual problem is though: /* Transform comparisons of the form (X & Y) CMP 0 to X CMP2 Z where ~Y + 1 =3D=3D pow2 and Z =3D ~Y. */ (for cst (VECTOR_CST INTEGER_CST) (for cmp (eq ne) icmp (le gt) (simplify (cmp (bit_and:c@2 @0 cst@1) integer_zerop) (with { tree csts =3D bitmask_inv_cst_vector_p (@1); } (if (csts && (VECTOR_TYPE_P (TREE_TYPE (@1)) || single_use (@2))) (with { auto optab =3D VECTOR_TYPE_P (TREE_TYPE (@1)) ? optab_vector : optab_default; tree utype =3D unsigned_type_for (TREE_TYPE (@1)); } (if (target_supports_op_p (utype, icmp, optab) || (optimize_vectors_before_lowering_p () && (!target_supports_op_p (type, cmp, optab) || !target_supports_op_p (type, BIT_AND_EXPR, optab)))) (if (TYPE_UNSIGNED (TREE_TYPE (@1))) (icmp @0 { csts; }) (icmp (view_convert:utype @0) { csts; }))))))))) pattern, for V2DImode !=3D or =3D=3D works, but > does not. I wonder how it could trigger though because target_supports_op_p (utype, i= cmp, optab) is false.=