From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ed1-x529.google.com (mail-ed1-x529.google.com [IPv6:2a00:1450:4864:20::529]) by sourceware.org (Postfix) with ESMTPS id 61D8E3858402 for ; Mon, 17 Jan 2022 07:47:39 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 61D8E3858402 Received: by mail-ed1-x529.google.com with SMTP id a18so61867447edj.7 for ; Sun, 16 Jan 2022 23:47:39 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=PNzQQGWXMaimD1TkxoH50aK9fjRBjmyENM4Kdr1A+js=; b=PmCmg+Fk32wbv5LH4PbsZTQZ0nVBtfsQAtqFS99E5V0pjFpL2hUEs6iJA0JxouMS3K csnE7vK6wkTLx8ikbkDy0XT3UwaFAfRhDD4mpmEXdHNo2nmE20cYORCzTh/ObHMSfTy+ kgvP6YO5jwTGADrYOxWHXDNdt5iAWRiKWiPZAriDktGsmjIf1j1FqTqDN/9oD4M9WFoY Fbx5MnLu9TyVeCrByPD91tyuoCXi5lSMZ7WdxBggBsyhDiWm1p+EKghPaa5LRkGhGFST yAHU1LBgZE8cuRwGmkYCnxXQlP5Q2tC0v4IuSkBlRUeI28gkH4trp8SUvwAaPNk+MrTd xsLA== X-Gm-Message-State: AOAM531rIdTY9HZ51PQW6DfBnhJdwhsxfPahKFdy2szwt1d5GW8ZsEMn 4ob4ahcLhYZDToK1DxFH602hEAOKmpLG0BgVHBI= X-Google-Smtp-Source: ABdhPJzR90FmXNjQIoDbJD87MaGcqkdEBUeQOPWzl0N2bKU/fEdnv+V7SSmqjMuU8t8WYK2kGksYCGuPAR3lS8ZftP4= X-Received: by 2002:a50:fc16:: with SMTP id i22mr6599453edr.345.1642405658255; Sun, 16 Jan 2022 23:47:38 -0800 (PST) MIME-Version: 1.0 References: <20220114182047.6270-2-amonakov@ispras.ru> In-Reply-To: <20220114182047.6270-2-amonakov@ispras.ru> From: Richard Biener Date: Mon, 17 Jan 2022 08:47:27 +0100 Message-ID: Subject: Re: [PATCH 1/3] tree-ssa-sink: do not sink to in front of setjmp To: Alexander Monakov Cc: GCC Patches Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-8.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 Jan 2022 07:47:40 -0000 On Fri, Jan 14, 2022 at 7:21 PM Alexander Monakov wrote: > > gcc/ChangeLog: > > * tree-ssa-sink.c (select_best_block): Punt if selected block > has incoming abnormal edges. OK. > gcc/testsuite/ChangeLog: > > * gcc.dg/setjmp-7.c: New test. > --- > gcc/testsuite/gcc.dg/setjmp-7.c | 13 +++++++++++++ > gcc/tree-ssa-sink.c | 6 ++++++ > 2 files changed, 19 insertions(+) > create mode 100644 gcc/testsuite/gcc.dg/setjmp-7.c > > diff --git a/gcc/testsuite/gcc.dg/setjmp-7.c b/gcc/testsuite/gcc.dg/setjmp-7.c > new file mode 100644 > index 000000000..44b5bcbfa > --- /dev/null > +++ b/gcc/testsuite/gcc.dg/setjmp-7.c > @@ -0,0 +1,13 @@ > +/* { dg-do compile } */ > +/* { dg-options "-O2 -fno-guess-branch-probability -w" } */ > +/* { dg-require-effective-target indirect_jumps } */ > + > +struct __jmp_buf_tag { }; > +typedef struct __jmp_buf_tag jmp_buf[1]; > +struct globals { jmp_buf listingbuf; }; > +extern struct globals *const ptr_to_globals; > +void foo() > +{ > + if ( _setjmp ( ((*ptr_to_globals).listingbuf ))) > + ; > +} > diff --git a/gcc/tree-ssa-sink.c b/gcc/tree-ssa-sink.c > index 66d7ae89e..016ecbaec 100644 > --- a/gcc/tree-ssa-sink.c > +++ b/gcc/tree-ssa-sink.c > @@ -208,6 +208,12 @@ select_best_block (basic_block early_bb, > temp_bb = get_immediate_dominator (CDI_DOMINATORS, temp_bb); > } > > + /* Placing a statement before a setjmp-like function would be invalid > + (it cannot be reevaluated when execution follows an abnormal edge). > + If we selected a block with abnormal predecessors, just punt. */ > + if (bb_has_abnormal_pred (best_bb)) > + return early_bb; > + > /* If we found a shallower loop nest, then we always consider that > a win. This will always give us the most control dependent block > within that loop nest. */ > -- > 2.33.1 >