From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 4CF79389365C; Tue, 6 Apr 2021 13:22:33 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 4CF79389365C From: "cvs-commit at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug target/99781] [11 Regression] ICE in partial_subreg_p, at rtl.h:3144 Date: Tue, 06 Apr 2021 13:22:33 +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: 11.0 X-Bugzilla-Keywords: ice-on-valid-code X-Bugzilla-Severity: normal 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: 11.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: Tue, 06 Apr 2021 13:22:33 -0000 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D99781 --- Comment #6 from CVS Commits --- The master branch has been updated by Vladimir Makarov : https://gcc.gnu.org/g:4bbd51afaa4a3c116fb538d912b35e126be80b41 commit r11-8008-g4bbd51afaa4a3c116fb538d912b35e126be80b41 Author: Vladimir N. Makarov Date: Wed Mar 31 13:26:30 2021 -0400 [PR99781] Update correctly reg notes in LRA for multi-registers and set= up biggest mode safely The PR is about incorrect use of partial_subreg_p for unordered modes. I found 2 places of dangerous comparing unordered modes in LRA. The patch removes dangerous use of paradoxical_subreg_p and partial_subreg_p in split_reg and process_bb_lives. The both places used them to solve PR77761 long time ago. But the problem was also fixed by later patches too (if there is no hard reg explicitly, it have VOIDmode and we use natural mode to split hard reg live, otherwise we use the biggest explicitly used mode for hard reg splitting). The PR also says about inaccurate update of reg notes in LRA. It happens for reg notes which refer for multi-registers. The patch also fixes this issue. gcc/ChangeLog: PR target/99781 * lra-constraints.c (split_reg): Don't check paradoxical_subreg= _p. * lra-lives.c (clear_sparseset_regnos, regnos_in_sparseset_p): = New functions. (process_bb_lives): Don't update biggest mode of hard reg for implicit in multi-register group. Use the new functions for updating dead_set and unused_set by register notes. gcc/testsuite/ChangeLog: PR target/99781 * g++.target/aarch64/sve/pr99781.C: New.=