From patchwork Tue Mar 14 18:46:20 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jason Merrill X-Patchwork-Id: 69787 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:5915:0:0:0:0:0 with SMTP id v21csp1926041wrd; Tue, 14 Mar 2023 11:49:16 -0700 (PDT) X-Google-Smtp-Source: AK7set9RldYIM6GXScGQtsT0i6UM2dm5NCVFoljV4uk7q7Q9Q4DABNR7123lXsbaL4pl9ymAhYvF X-Received: by 2002:a17:907:8b97:b0:92d:591f:6586 with SMTP id tb23-20020a1709078b9700b0092d591f6586mr33376ejc.34.1678819756197; Tue, 14 Mar 2023 11:49:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1678819756; cv=none; d=google.com; s=arc-20160816; b=mk4IYdLJdCVDQAwG7J112SZSieVAsSEQUFHErqkLFyf5cwYVLmI4VlPTJSJ18mEvmC PjR2m8GM0ILoRJ8gOgyrqPTV1/wYjsdNVSf1DSLjIIJ34+lmvd6qDpGaQnCIgIYnZtE7 friuPYJFxCr4BLqKzAS7UI7ESjhTjDna2ujSbeC2ReWL3wNUqYGh0Hj5tZqx1xGkWY6d uVvjlthQGsr8yhwyVOExVAM0pqyH9x/uGrPKyFLae8KkOhiAefxP3R23KJ9GQsc6NA5r zVxkWz8Rgt+RQDQ89cwGS2k3nsze4nexLsoNfELJGIPHLYryv6t8Lwg+ts+u1W79ad+Q hXzA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:from:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence :content-transfer-encoding:mime-version:message-id:date:subject:to :dmarc-filter:delivered-to:dkim-signature:dkim-filter; bh=MaRMQoZ/BFEC2oNQ5D8krMxw2CVJoCFl3WTj5vnBHxY=; b=LKdi7B7j/MYcrg3ct1ltEitPUGbFRRey3c2JYXYpyF/cBfHKhHLxFx+wKZKSlZzCHw +GiARN8/ZkHUJTAKTdPX5CE8SbisxoeAuWDgIGI6OX0mR8dTPX5wh9dhR/w1jX1vS38I AtpVoCeNmlYfUBndoO622XJbtxoQv9KVQos84tcSwtu0gvMG+JQlP5nw/dTwselVDbxF rTyOLswL9c7plMDfavN/+52Hj8/HxUMFQSCVhTldfHApmyk69kpIP+50aN0QnXEvJ0We y9jkLsMXFRRHEi1V2L+spce8ixSprBHMqvpY3ZCplyj2bvgEuXypcTxXPjJYTwBTgWl3 TuVg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=YFgjO76M; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id qa7-20020a170907868700b0092cc2de9a1esi2785940ejc.900.2023.03.14.11.49.16 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Mar 2023 11:49:16 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=YFgjO76M; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 019CE385B528 for ; Tue, 14 Mar 2023 18:48:21 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 019CE385B528 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1678819701; bh=MaRMQoZ/BFEC2oNQ5D8krMxw2CVJoCFl3WTj5vnBHxY=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=YFgjO76MOPKC1ft5rtUqmn8vs3u6y1H86Qjqq+TVDPtt6T8nwUHqKrGjVv1ph1W9l 9CtKW4b4Lz17/tI79IIBlS3fsKE8PwivGj90na+mG/NG0mynSM38GFIiXesoxmtpQO AoFeGxV/o/5Y8+4HoDRRBCXX3FhmnmT8HOcoIN5k= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTPS id 735E13858431 for ; Tue, 14 Mar 2023 18:46:27 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 735E13858431 Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-624-h_OGTS-qOha1pAR2CBtvQw-1; Tue, 14 Mar 2023 14:46:25 -0400 X-MC-Unique: h_OGTS-qOha1pAR2CBtvQw-1 Received: by mail-qk1-f198.google.com with SMTP id pc36-20020a05620a842400b00742c715894bso9278422qkn.21 for ; Tue, 14 Mar 2023 11:46:25 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678819585; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=MaRMQoZ/BFEC2oNQ5D8krMxw2CVJoCFl3WTj5vnBHxY=; b=ewnSJjLqB3sdqaSDFcjusDJYt4AhaZcNYZ6DiZQ35gyNfKgGq+CNUwyENveqsUxP/k sQCpss9v8CTOL6q4gbCs4x9PH5oeM/tYMUj6R7Br2+JopdNv0/fMOyOsa7DpH8NBFEk/ svue4sVrV71FWG93RAHuUJMpqP83bQ2Ap5wVB6Hgoerk765YWLmGNeN27lcm0IOTFkOT 1gUOJfoVC4B1NsyYoxA/Sa/bf56veukKF7tGtBIqoavnaGn5zjCuAn+0nzsT4pnZs4nc 3fQppf1ANKvpv0T2MmmG/y/OGLN2OQv8HvgGjELTtdHD+OKC3r8RDjK+U5u5o2W6aPy+ BX3Q== X-Gm-Message-State: AO0yUKUHc3oLPQd412zPAgdOn8PXdH5uHQ2VsJ9m02EDkGHaQFQ43r9q qdNNAJtFHoaOVmJFnMXSKVOL5vG50WNRENiVyTd60ba84tVzv51o6kkJxRiq9Y6I6SYL7Br/WV0 0/FatkmYcRTpVxWbIpqiIJCEj8vX8PhTyXsvCoJohETUDfq/c17TInFJGBu+N2tCqHJQJeYFqNw == X-Received: by 2002:a05:6214:19c5:b0:56a:b749:3ca0 with SMTP id j5-20020a05621419c500b0056ab7493ca0mr23372166qvc.35.1678819585029; Tue, 14 Mar 2023 11:46:25 -0700 (PDT) X-Received: by 2002:a05:6214:19c5:b0:56a:b749:3ca0 with SMTP id j5-20020a05621419c500b0056ab7493ca0mr23372105qvc.35.1678819584476; Tue, 14 Mar 2023 11:46:24 -0700 (PDT) Received: from jason.cygnus.com (130-44-159-43.s15913.c3-0.arl-cbr1.sbo-arl.ma.cable.rcncustomer.com. [130.44.159.43]) by smtp.gmail.com with ESMTPSA id p75-20020a37424e000000b007423caef02fsm2264505qka.122.2023.03.14.11.46.23 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Mar 2023 11:46:23 -0700 (PDT) To: gcc-patches@gcc.gnu.org Subject: [pushed] c++: -Wreturn-type with if (true) throw [PR107310] Date: Tue, 14 Mar 2023 14:46:20 -0400 Message-Id: <20230314184620.373190-1-jason@redhat.com> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-Spam-Status: No, score=-12.6 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) 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-Patchwork-Original-From: Jason Merrill via Gcc-patches From: Jason Merrill Reply-To: Jason Merrill Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org Sender: "Gcc-patches" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1760370105016741095?= X-GMAIL-MSGID: =?utf-8?q?1760370105016741095?= Tested x86_64-pc-linux-gnu, applying to trunk. -- 8< -- I removed this folding in GCC 12 because it was interfering with an experiment of richi's, but that never went in and the change causes regressions, so let's put it back. This reverts commit r12-5638-ga3e75c1491cd2d. PR c++/107310 gcc/cp/ChangeLog: * cp-gimplify.cc (genericize_if_stmt): Restore folding of constant conditions. gcc/testsuite/ChangeLog: * c-c++-common/Wimplicit-fallthrough-39.c: Adjust warning. * g++.dg/warn/Wreturn-6.C: New test. --- gcc/cp/cp-gimplify.cc | 6 ++++++ .../c-c++-common/Wimplicit-fallthrough-39.c | 4 ++-- gcc/testsuite/g++.dg/warn/Wreturn-6.C | 16 ++++++++++++++++ 3 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/g++.dg/warn/Wreturn-6.C base-commit: 42630fadbe248717859d61c0244c821c32b4e52c diff --git a/gcc/cp/cp-gimplify.cc b/gcc/cp/cp-gimplify.cc index b995b4f81a5..4fecd5616bd 100644 --- a/gcc/cp/cp-gimplify.cc +++ b/gcc/cp/cp-gimplify.cc @@ -190,6 +190,12 @@ genericize_if_stmt (tree *stmt_p) } else if (IF_STMT_CONSTEXPR_P (stmt)) stmt = integer_nonzerop (cond) ? then_ : else_; + /* ??? This optimization doesn't seem to belong here, but removing it + causes -Wreturn-type regressions (e.g. 107310). */ + else if (integer_nonzerop (cond) && !TREE_SIDE_EFFECTS (else_)) + stmt = then_; + else if (integer_zerop (cond) && !TREE_SIDE_EFFECTS (then_)) + stmt = else_; else stmt = build3 (COND_EXPR, void_type_node, cond, then_, else_); protected_set_expr_location_if_unset (stmt, locus); diff --git a/gcc/testsuite/c-c++-common/Wimplicit-fallthrough-39.c b/gcc/testsuite/c-c++-common/Wimplicit-fallthrough-39.c index da4aef3a318..d06bc0db5ec 100644 --- a/gcc/testsuite/c-c++-common/Wimplicit-fallthrough-39.c +++ b/gcc/testsuite/c-c++-common/Wimplicit-fallthrough-39.c @@ -37,8 +37,8 @@ fn2 (int n) switch (n) { case 0: - if (1) /* { dg-warning "statement may fall through" "" { target c++ } } */ - n++; /* { dg-warning "statement may fall through" "" { target c } } */ + if (1) + n++; /* { dg-warning "statement may fall through" } */ case 1: /* { dg-message "here" } */ return -1; } diff --git a/gcc/testsuite/g++.dg/warn/Wreturn-6.C b/gcc/testsuite/g++.dg/warn/Wreturn-6.C new file mode 100644 index 00000000000..85fef0e16df --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/Wreturn-6.C @@ -0,0 +1,16 @@ +// PR c++/107310 + +struct f +{ + ~f(); +}; + +int foo(int t) { + f g; + switch (t) { + case 1: + return 1; + } + if (true) + throw 1; +} // { dg-bogus "control reaches end" }