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: 1757029 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.a=rsa-sha256 header.s=default header.b=JAmU699D; dkim-atps=neutral Received: from sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4PbjFr61RZz1yWr for ; Wed, 15 Mar 2023 05:47:59 +1100 (AEDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 26C7138582A1 for ; Tue, 14 Mar 2023 18:47:57 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 26C7138582A1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1678819677; bh=MaRMQoZ/BFEC2oNQ5D8krMxw2CVJoCFl3WTj5vnBHxY=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=JAmU699DIQ+CVYRsZFG/1jk1IR/44psYOMn3cNET6LcWzH+EnHyNku6MwkHzshwsV zgUr5egfR/8o7jUTOzNzRnxg35XcyWbPXrPVQ9YvG/0GH7z8M33zLgcGw4F3xccMU+ gxyKcjBp6K26G4CAmHumMou7ca2hC7q9Ld/XGxHE= 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-Google-Smtp-Source: AK7set+j8ZN+ylqNtdM601KOFOe7u+cAHmWhGUTOXKIQTdz7TnkIR3GtYtJ757EcDgCTDqZmaznQBw== 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+incoming=patchwork.ozlabs.org@gcc.gnu.org Sender: "Gcc-patches" 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" }