From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id BCE9B3858D39; Tue, 27 Jun 2023 16:46:21 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org BCE9B3858D39 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1687884381; bh=qBRR0TaC/zBgOspk0WEMSGTSW7VOmckpaxrPoDKB0Zk=; h=From:To:Subject:Date:In-Reply-To:References:From; b=YdqUTEuqbfDf7Ab3e0Ry9bl2FtFrK3nQzJy/6kP4KYMzrV1MHFnKTQpbmQX/8V7ll Ipi1JEb2te3Oz5ny2zSed9wiV0AzOcPF5F635fHUEmSChSnwd70Qgj0dSOpmux2XbS cW03JjzTs+JAVMV/d3KJoPU2VkYZhCihIMLsPa6k= From: "cvs-commit at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug middle-end/103979] asm goto is not considered volatile with output operands Date: Tue, 27 Jun 2023 16:46:21 +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: 11.2.0 X-Bugzilla-Keywords: ice-on-valid-code, inline-asm, patch, wrong-code X-Bugzilla-Severity: normal X-Bugzilla-Who: cvs-commit at gcc dot gnu.org X-Bugzilla-Status: ASSIGNED X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: pinskia 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 List-Id: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D103979 --- Comment #11 from CVS Commits --- The releases/gcc-13 branch has been updated by Andrew Pinski : https://gcc.gnu.org/g:81fa6dfe1691e93664ef3b4fa66c1e057acea281 commit r13-7484-g81fa6dfe1691e93664ef3b4fa66c1e057acea281 Author: Andrew Pinski Date: Mon Jun 26 17:14:06 2023 -0700 Mark asm goto with outputs as volatile The manual references asm goto as being implicitly volatile already and that was done when asm goto could not have outputs. When outputs were added to `asm goto`, only asm goto without outputs were still being marked as volatile. Now some parts of GCC decide, removing the `asm got= o` is ok if the output is not used, though not updating the CFG (this happ= ens on both the RTL level and the gimple level). Since the biggest user of = `asm goto` is the Linux kernel and they expect them to be volatile (they use them = to copy to/from userspace), we should just mark the inline-asm as volatile. OK? Bootstrapped and tested on x86_64-linux-gnu. PR middle-end/110420 PR middle-end/103979 PR middle-end/98619 gcc/ChangeLog: * gimplify.cc (gimplify_asm_expr): Mark asm with labels as volatile. gcc/testsuite/ChangeLog: * gcc.c-torture/compile/asmgoto-6.c: New test. (cherry picked from commit 478840a2ca491fbff44371caee4983d1e7b7b7cf)=