From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1666) id 34B443858D3C; Tue, 21 Feb 2023 09:26:57 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 34B443858D3C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1676971617; bh=XMKI57gjo+7SNADyMyV37NOC5XJG7brL2fAddcOXUEM=; h=From:To:Subject:Date:From; b=nR2w/WGSlxxAGgYED3cFlU0jVJB8EAvj98EoD33I6Vmcdsa68DvFxBWdhqyO7zrdJ cOCHoDeca5e9bMJ51CZ1ebNTNUnKpVgtcLSDpYkcRFJ9e2xqny3PKDuAnQ+mQMwF0t ElQF5Q/frt2PL0t68LzbruOMnZZf7CjWJ10wTZXA= MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Richard Biener To: gcc-cvs@gcc.gnu.org Subject: [gcc r13-6151] Revert "tree-optimization/108691 - indirect calls to setjmp" X-Act-Checkin: gcc X-Git-Author: Richard Biener X-Git-Refname: refs/heads/master X-Git-Oldrev: a804419c89db9e1c0b99e772dda6c95095bab0bf X-Git-Newrev: 19ec4092a74821055d3bd61023b3bc2bd1ec4f10 Message-Id: <20230221092657.34B443858D3C@sourceware.org> Date: Tue, 21 Feb 2023 09:26:57 +0000 (GMT) List-Id: https://gcc.gnu.org/g:19ec4092a74821055d3bd61023b3bc2bd1ec4f10 commit r13-6151-g19ec4092a74821055d3bd61023b3bc2bd1ec4f10 Author: Richard Biener Date: Tue Feb 21 10:26:30 2023 +0100 Revert "tree-optimization/108691 - indirect calls to setjmp" This reverts commit 6436add49ed9ecf74f1f01b4fe18961df4f3e83d. Diff: --- gcc/calls.cc | 10 +++++----- gcc/cfgexpand.cc | 7 ------- gcc/testsuite/gcc.dg/pr108691.c | 9 --------- gcc/tree-cfg.cc | 4 +--- 4 files changed, 6 insertions(+), 24 deletions(-) diff --git a/gcc/calls.cc b/gcc/calls.cc index 0242d52cfb3..4d7f6c3d291 100644 --- a/gcc/calls.cc +++ b/gcc/calls.cc @@ -506,11 +506,11 @@ emit_call_1 (rtx funexp, tree fntree ATTRIBUTE_UNUSED, tree fndecl ATTRIBUTE_UNU if (ecf_flags & ECF_NORETURN) add_reg_note (call_insn, REG_NORETURN, const0_rtx); - if (ecf_flags & ECF_RETURNS_TWICE - /* We rely on GIMPLE setting this flag and here use it to - catch formerly indirect and not control-altering calls. */ - && cfun->calls_setjmp) - add_reg_note (call_insn, REG_SETJMP, const0_rtx); + if (ecf_flags & ECF_RETURNS_TWICE) + { + add_reg_note (call_insn, REG_SETJMP, const0_rtx); + cfun->calls_setjmp = 1; + } SIBLING_CALL_P (call_insn) = ((ecf_flags & ECF_SIBCALL) != 0); diff --git a/gcc/cfgexpand.cc b/gcc/cfgexpand.cc index ab143a6d2d3..25b1558dcb9 100644 --- a/gcc/cfgexpand.cc +++ b/gcc/cfgexpand.cc @@ -2808,11 +2808,6 @@ expand_call_stmt (gcall *stmt) /* Must come after copying location. */ copy_warning (exp, stmt); - /* For calls that do not alter control flow avoid REG_SETJMP notes. */ - bool saved_calls_setjmp = cfun->calls_setjmp; - if (!gimple_call_ctrl_altering_p (stmt)) - cfun->calls_setjmp = false; - /* Ensure RTL is created for debug args. */ if (decl && DECL_HAS_DEBUG_ARGS_P (decl)) { @@ -2851,8 +2846,6 @@ expand_call_stmt (gcall *stmt) } mark_transaction_restart_calls (stmt); - - cfun->calls_setjmp = saved_calls_setjmp; } diff --git a/gcc/testsuite/gcc.dg/pr108691.c b/gcc/testsuite/gcc.dg/pr108691.c deleted file mode 100644 index e412df10f22..00000000000 --- a/gcc/testsuite/gcc.dg/pr108691.c +++ /dev/null @@ -1,9 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2" } */ - -extern int __attribute__((returns_twice)) setjmp(void*); - -void bbb(void) { - int (*fnptr)(void*) = setjmp; - fnptr(0); -} diff --git a/gcc/tree-cfg.cc b/gcc/tree-cfg.cc index e23293e5cd1..a9fcc7fd050 100644 --- a/gcc/tree-cfg.cc +++ b/gcc/tree-cfg.cc @@ -2280,9 +2280,7 @@ notice_special_calls (gcall *call) if (flags & ECF_MAY_BE_ALLOCA) cfun->calls_alloca = true; - if (flags & ECF_RETURNS_TWICE - && (!(cfun->curr_properties & PROP_cfg) - || gimple_call_ctrl_altering_p (call))) + if (flags & ECF_RETURNS_TWICE) cfun->calls_setjmp = true; }