From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 0CBE4385840C; Wed, 6 Apr 2022 11:22:29 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0CBE4385840C From: "rguenther at suse dot de" To: gcc-bugs@gcc.gnu.org Subject: [Bug tree-optimization/105165] ICE in gimple_redirect_edge_and_branch, at tree-cfg.cc:6136 Date: Wed, 06 Apr 2022 11:22:28 +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: normal X-Bugzilla-Who: rguenther at suse dot de 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: --- 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, 06 Apr 2022 11:22:29 -0000 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D105165 --- Comment #5 from rguenther at suse dot de --- On Wed, 6 Apr 2022, jakub at gcc dot gnu.org wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D105165 >=20 > --- Comment #4 from Jakub Jelinek --- > Outputs from asm goto has been strongly demanded feature from mainly linux > kernel folks. > Allowing all but complex outputs from asm goto would be just weird. >=20 > I think if we can't punt on the cplx lowering for certain SSA_NAMEs (forc= e them > to be extracted before all uses instead), we'd need to extract them on al= l the > edges from the asm goto (if they have a single predecessor, the asm goto,= at > the start of those bbs, if they have multiple, split the edges and adjust > labels) but then we'd need to create PHIs somewhere. The complex lowering machinery is currently neither set up to extract before all uses nor to emit multiple copies on edges and update SSA form accordingly for the ongoing rewrite. I suppose the easiest thing to do would be to prepare the edge emission upfront by emitting copies on all outgoing edges, updating SSA form there (replace all uses with a bare decl, assign to the decl and then rewrite that into SSA via update_ssa). And then just assume duplicate emission to each edge is "trivially" possible by consuming the copy stmt (actually re-writing that). But that feels like a hack for a feature going wrong :/ We should have a way to have an asm output that's CONCAT (real, imag), that would simplify things a lot here. Anyway, nobody is going to run into this in practice. Maybe instead of ICEing we can just sorry from complex lowering ... eh.=