From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 4B0CC3858D28; Wed, 12 Apr 2023 13:03:40 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 4B0CC3858D28 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1681304620; bh=27VKB1Ql8YIf96EymDqw6v2yqgG8OVqYyEXEsfEbs70=; h=From:To:Subject:Date:In-Reply-To:References:From; b=iITDsLXS1fQqYFqOT22D3hR5OCUbz2omg+HNG1WZy92kQ1vMhY9WfikM8sDBCAhR2 mHs+M+4KPKivaaFF7SWHbW/tFLu8+o/Bmyj5v4FpNTz1HNjM4tgn9K/Eos8hr5a8A0 RM5Ob0Tjka9AEPF+MTXS4ng92tl2PUcOzDJvd7VA= From: "jakub at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug middle-end/109484] [Wrong Code][inline-asm] output operands overlap with output Date: Wed, 12 Apr 2023 13:03:40 +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: X-Bugzilla-Severity: normal X-Bugzilla-Who: jakub at gcc dot gnu.org X-Bugzilla-Status: RESOLVED X-Bugzilla-Resolution: INVALID 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: resolution bug_status cc 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=3D109484 Jakub Jelinek changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |INVALID Status|UNCONFIRMED |RESOLVED CC| |jakub at gcc dot gnu.org --- Comment #7 from Jakub Jelinek --- Similar bug. The basic GCC expectations for inline-asm is that the whole assembly template after substitutions (which is for GCC mostly intentionall= y a black box) works as a single instruction which reads all its inputs (and th= at obviously doesn't mean just the input themselves, but also any other register/memory used in the input) and then stores all its outputs. Early clobbers are the way to tell the compiler that it is not the case and some output is written before all the inputs are used.=