From patchwork Tue Nov 30 21:05:08 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jason Merrill X-Patchwork-Id: 48306 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id D146D385AC2D for ; Tue, 30 Nov 2021 21:07:16 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D146D385AC2D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1638306436; bh=6PV4z+IM69MHCZc86ia41QHxCH7WMPPpeeTkqYkPAKA=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:Cc:From; b=BJttSqBFraCSQGrKF3fkA6e9aqnx3lFcja84ZGCN8WTnsq5vArvWKB7lgPixrKC96 tl+bvQSYDkKD+IT/OJ0A3t6rXovJ+4Z6BxgbbPtpYkrPgKvC+yMMXnRkxl1IbXt2FR T3i/E7G1+SnPyRqvEXLvKeWMqV3SgsfOA6HoikJA= 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.129.124]) by sourceware.org (Postfix) with ESMTPS id 1234C385AC20 for ; Tue, 30 Nov 2021 21:05:14 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 1234C385AC20 Received: from mail-qv1-f69.google.com (mail-qv1-f69.google.com [209.85.219.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-43-qgbA49FXOyegr5ydPRDeYA-1; Tue, 30 Nov 2021 16:05:12 -0500 X-MC-Unique: qgbA49FXOyegr5ydPRDeYA-1 Received: by mail-qv1-f69.google.com with SMTP id kk1-20020a056214508100b003a9d1b987caso31051661qvb.4 for ; Tue, 30 Nov 2021 13:05:12 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=6PV4z+IM69MHCZc86ia41QHxCH7WMPPpeeTkqYkPAKA=; b=Ly2pJWCIPpCtyrbBQ9n3TrTA6eAyZ8rheU6yM17IediKkxwrI+3iABO+y9G0FnYPAg IcGO/DfeiWEsdHlV9f7sXP+aexPulXlXHnX8GRoSAyGpWlQAvuCcalSuzMM5gEQslxAq OUMtMDyALB5LPLLJBDQ+2/QDjiiYI31fG7tPT43hEK+7l+PWtRiWhkgWzSIzLDAq2u/i iPqf3YT7wcbCj6tMsv31H68GzNT0fqj1SP2F4G/JLG925xluF/qs7IV7xcFiu0UjJthe cB9fypirIbr5fB3bWWNk9zPImoE1Sqz7kSx54g/V0zoO7UnccgPEGdTtGXM7PE+AQ+KX K49g== X-Gm-Message-State: AOAM533wAtFLeDVzz8kD2RJe8awouQLjRKw/0D3xCvQrM1CQjtyCIszJ +ensA42sgGfmlqTsRt7xzvGPJVRT/mPNHMsB2sb1D3XNG7A8mZcIDDLO9mduLvYMs9wB4GQMGQT f3r4efgAeQhGUvYmF0NBuaPg7nTODFEAvrcbjNRuFeM7WBxmccJJNzJeHR+Owarb9qA== X-Received: by 2002:a05:620a:1988:: with SMTP id bm8mr2045545qkb.494.1638306311716; Tue, 30 Nov 2021 13:05:11 -0800 (PST) X-Google-Smtp-Source: ABdhPJzb4Z7TDJgYp2bpyzywLEaoIMRhtNTg5z42BLbhx26/NZQkgcevJbuXDd6NYElam9Ry2u5NdA== X-Received: by 2002:a05:620a:1988:: with SMTP id bm8mr2045496qkb.494.1638306311319; Tue, 30 Nov 2021 13:05:11 -0800 (PST) Received: from barrymore.redhat.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 bq36sm10631533qkb.6.2021.11.30.13.05.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Nov 2021 13:05:10 -0800 (PST) To: gcc-patches@gcc.gnu.org Subject: [PATCH] c++: don't fold away 'if' with constant condition Date: Tue, 30 Nov 2021 16:05:08 -0500 Message-Id: <20211130210508.2983006-1-jason@redhat.com> X-Mailer: git-send-email 2.27.0 MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-Spam-Status: No, score=-13.3 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_LOW, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, 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-Patchwork-Original-From: Jason Merrill via Gcc-patches From: Jason Merrill Reply-To: Jason Merrill Cc: Marek Polacek , Richard Biener Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" richi's recent unreachable code warning experiments had trouble with the C++ front end folding away an 'if' with a constant condition. Let's do less folding at the statement level. Thanks to Marek for finding the offending code. Tested x86_64-pc-linux-gnu, applying to trunk. gcc/cp/ChangeLog: * cp-gimplify.c (genericize_if_stmt): Always build a COND_EXPR. --- gcc/cp/cp-gimplify.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) base-commit: 92de188ea3d36ec012b6d42959d4722e42524256 diff --git a/gcc/cp/cp-gimplify.c b/gcc/cp/cp-gimplify.c index 0988655eeba..0a002db14e7 100644 --- a/gcc/cp/cp-gimplify.c +++ b/gcc/cp/cp-gimplify.c @@ -166,11 +166,8 @@ genericize_if_stmt (tree *stmt_p) can contain unfolded immediate function calls, we have to discard the then_ block regardless of whether else_ has side-effects or not. */ if (IF_STMT_CONSTEVAL_P (stmt)) - stmt = else_; - else if (integer_nonzerop (cond) && !TREE_SIDE_EFFECTS (else_)) - stmt = then_; - else if (integer_zerop (cond) && !TREE_SIDE_EFFECTS (then_)) - stmt = else_; + stmt = build3 (COND_EXPR, void_type_node, boolean_false_node, + void_node, else_); else stmt = build3 (COND_EXPR, void_type_node, cond, then_, else_); protected_set_expr_location_if_unset (stmt, locus);