From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id BA5533858D28; Wed, 24 Nov 2021 01:01:13 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org BA5533858D28 From: "cvs-commit at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug tree-optimization/103194] [12 Regression] ice in optimize_atomic_bit_test_and with __sync_fetch_and_and since r12-5102-gfb161782545224f5 Date: Wed, 24 Nov 2021 01:01:13 +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: 12.0 X-Bugzilla-Keywords: ice-on-valid-code X-Bugzilla-Severity: blocker X-Bugzilla-Who: cvs-commit at gcc dot gnu.org X-Bugzilla-Status: NEW X-Bugzilla-Resolution: X-Bugzilla-Priority: P1 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: 12.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 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, 24 Nov 2021 01:01:13 -0000 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D103194 --- Comment #20 from CVS Commits --- The master branch has been updated by hongtao Liu : https://gcc.gnu.org/g:7df89377a7ae3906255e38a79be8e5d962c3a0df commit r12-5486-g7df89377a7ae3906255e38a79be8e5d962c3a0df Author: liuhongt Date: Tue Nov 16 13:36:36 2021 +0800 Enhance optimize_atomic_bit_test_and to handle truncation. r12-5102-gfb161782545224f5 improves integer bit test on __atomic_fetch_[or|and]_* returns only for nop_convert, .i.e. transfrom mask_5 =3D 1 << bit_4(D); mask.0_1 =3D (unsigned int) mask_5; _2 =3D __atomic_fetch_or_4 (a_7(D), mask.0_1, 0); t1_9 =3D (int) _2; t2_10 =3D mask_5 & t1_9; to mask_5 =3D 1 << n_4(D); mask.1_1 =3D (unsigned int) mask_5; _11 =3D .ATOMIC_BIT_TEST_AND_SET (&pscc_a_1_4, n_4(D), 0); _8 =3D (int) _11; And this patch extend the original patch to handle truncation. .i.e. transform long int mask; mask_8 =3D 1 << n_7(D); mask.0_1 =3D (long unsigned int) mask_8; _2 =3D __sync_fetch_and_or_8 (&pscc_a_2_3, mask.0_1); _3 =3D (unsigned int) _2; _4 =3D (unsigned int) mask_8; _5 =3D _3 & _4; _6 =3D (int) _5; to long int mask; mask_8 =3D 1 << n_7(D); mask.0_1 =3D (long unsigned int) mask_8; _14 =3D .ATOMIC_BIT_TEST_AND_SET (&pscc_a_2_3, n_7(D), 0); _5 =3D (unsigned int) _14; _6 =3D (int) _5; 2021-11-17 Hongtao Liu H.J. Lu gcc/ChangeLog: PR tree-optimization/103194 * match.pd (gimple_nop_atomic_bit_test_and_p): Extended to match truncation. * tree-ssa-ccp.c (gimple_nop_convert): Declare. (optimize_atomic_bit_test_and): Enhance optimize_atomic_bit_test_and to handle truncation. gcc/testsuite/ChangeLog: * gcc.target/i386/pr103194-2.c: New test. * gcc.target/i386/pr103194-3.c: New test. * gcc.target/i386/pr103194-4.c: New test. * gcc.target/i386/pr103194-5.c: New test. * gcc.target/i386/pr103194.c: New test.=