From patchwork Wed Nov 29 16:52:03 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Andrew MacLeod X-Patchwork-Id: 80975 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 D62D33875436 for ; Wed, 29 Nov 2023 16:52:44 +0000 (GMT) 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 C8069386EC30 for ; Wed, 29 Nov 2023 16:52:07 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C8069386EC30 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org C8069386EC30 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701276729; cv=none; b=voAqs5aVKwp6HzbGCtNJcZo8MrtIZY+mxiezpP4r6w8huuxh94DmZPb5iQMhGbJZ5iy7O1w8DEgem7fEz7HkbFp4p1zQwQZzdEqilpeQin1fMkMeVybR0eZqDMylLonp34QpcM0QLtAp6WLtAyokJG3TnIBHIIgUY8TxXbWDeYk= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701276729; c=relaxed/simple; bh=elYEG5Q84TDIPaT5r6iPSXB7oXbLP8Dnp44NMWyC3Oc=; h=DKIM-Signature:Message-ID:Date:MIME-Version:To:From:Subject; b=vn7rIm7tke6HG2udwobUHMvs9Yg1pf3aIr0bYCWAbsM+5SszxcDi0l375xc0Xmk/uB/4Dxtx8ouYR50YywWz59zYrsrKGlI42ncxlKbQQzaxft68FzF7jwmtVGscQVM5rVAuPlLtsn+89ZiNAwo2KGe/WjVL4dEAqAXh1s1UOoo= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1701276727; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type; bh=xNGk7E491IkoVjIRnO5Pxr3vDw9/1vzTNk4Ey/pLgsc=; b=f5638Y2PlL+oh7Qv/ohTzKUASsOig0Lj4o8sx1S3njLwzU19UAK/2W1qR3Gi/Lnr1JvwKx t/92NTagO6YeIT4P1lo6Cey4EH9b3/WVV2n1/YtffcnHe7HdQFhfczofs0KJZ+Zx4O6Sb6 jqtyP0brXRK/aNmuWL+mKwnEq8U9vP8= Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-668-FYVaHAneMXiWmyc4QVSGJw-1; Wed, 29 Nov 2023 11:52:06 -0500 X-MC-Unique: FYVaHAneMXiWmyc4QVSGJw-1 Received: by mail-qk1-f199.google.com with SMTP id af79cd13be357-77d69e3dd18so859519585a.0 for ; Wed, 29 Nov 2023 08:52:06 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701276724; x=1701881524; h=subject:from:cc:to:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=YbSXsvTeoDBsVOEIX0PNZ4Q4AT5wl/Cas8VAj+JbfAA=; b=nTYo2o5fEAAs1vL8cRShsSeLzc4HA0Wv1BBV2g/m2+5iz81lOQBX4NVb57Zj3GEIL6 5k75DU/jLCny5wPQHgcACY1mo0V4Ppflc1Ye+vGAfB15OHPiRdjpeCorK9P3euF1iF19 Y7h8P7Q7JzbiUj5YDvV3JVE9e7v+iW5lMYn7r8rzhJ9Wie6S4PBIWE95JUGXLQPO2HkL dPgv5HQ2E+56XGYvZOTNbAy0xYhw2XE0ZVTL2JEXWPQjLo5Qa9h6NNEDQFbJPNdmkl7p Za7uTfXTLcibytzt5nqqGiwvapScq3sbalZCHQruJmUuhIUrKcwpmQJLheQoKjGOTf21 S0pg== X-Gm-Message-State: AOJu0Yzv8c4uzzQ8nCE1Tin78UPVgfTsK7JQsHchd77emBPJIEGlO6Fl WQX1IkHkj+3IbccePff2GeNySoLRyV7J4gNSCqlM+o19tuSv2TifLvTMdEEbg3YmO7XntR/+tqc RFTG5EB8n3K39tl2ggXcbvelaorQls+6BV9rSHRSymNx+4DJ+SqNqsB/NkxmQDF9gH7DbWiGqQm ZkMA== X-Received: by 2002:a05:620a:28d2:b0:77d:84b5:4735 with SMTP id l18-20020a05620a28d200b0077d84b54735mr21676991qkp.72.1701276724530; Wed, 29 Nov 2023 08:52:04 -0800 (PST) X-Google-Smtp-Source: AGHT+IF1yawXJXRsNYk2N/JyHbsbFc9DXWcjKWDydToe77nWrO2mB47SHZHijJXWFd1o+WADO03Bng== X-Received: by 2002:a05:620a:28d2:b0:77d:84b5:4735 with SMTP id l18-20020a05620a28d200b0077d84b54735mr21676963qkp.72.1701276724152; Wed, 29 Nov 2023 08:52:04 -0800 (PST) Received: from ?IPV6:2607:fea8:51dd:2b00::115f? ([2607:fea8:51dd:2b00::115f]) by smtp.gmail.com with ESMTPSA id m21-20020a05620a221500b0077dcaba6709sm863672qkh.135.2023.11.29.08.52.03 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 29 Nov 2023 08:52:03 -0800 (PST) Message-ID: <66040d93-2068-4b76-bc50-edda2793d56b@redhat.com> Date: Wed, 29 Nov 2023 11:52:03 -0500 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: gcc-patches Cc: "hernandez, aldy" , Richard Biener From: Andrew MacLeod Subject: [COMMITTED 2/2] PR tree-optimization/111922 - Check operands before invoking fold_range. X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US X-Spam-Status: No, score=-11.5 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_H3, RCVD_IN_MSPIKE_WL, RCVD_IN_SORBS_WEB, SPF_HELO_NONE, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE 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.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org This patch utilizes the new check_operands_p() routine in range-ops to verify the operands are compatible before IPA tries to call fold_range().   I do not know if there are other places in IPA that should be checking this, but we have a bug report for this place at least. The other option would be to have fold_range simply return false when operands don't match, but then we lose the compile time checking that everything is as it should be and bugs may sneak thru. Bootstraps on x86_64-pc-linux-gnu with  no regressions. Committed. Andrew From 5f0c0f02702eba568374a7d82ec9463edd1a905c Mon Sep 17 00:00:00 2001 From: Andrew MacLeod Date: Tue, 28 Nov 2023 13:02:35 -0500 Subject: [PATCH 2/2] Check operands before invoking fold_range. Call check_operands_p before fold_range to make sure it is a valid operation. PR tree-optimization/111922 gcc/ * ipa-cp.cc (ipa_vr_operation_and_type_effects): Check the operands are valid before calling fold_range. gcc/testsuite/ * gcc.dg/pr111922.c: New. --- gcc/ipa-cp.cc | 3 ++- gcc/testsuite/gcc.dg/pr111922.c | 29 +++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.dg/pr111922.c diff --git a/gcc/ipa-cp.cc b/gcc/ipa-cp.cc index 34fae065454..649ad536161 100644 --- a/gcc/ipa-cp.cc +++ b/gcc/ipa-cp.cc @@ -1926,7 +1926,8 @@ ipa_vr_operation_and_type_effects (vrange &dst_vr, Value_Range varying (dst_type); varying.set_varying (dst_type); - return (handler.fold_range (dst_vr, dst_type, src_vr, varying) + return (handler.operand_check_p (dst_type, src_type, dst_type) + && handler.fold_range (dst_vr, dst_type, src_vr, varying) && !dst_vr.varying_p () && !dst_vr.undefined_p ()); } diff --git a/gcc/testsuite/gcc.dg/pr111922.c b/gcc/testsuite/gcc.dg/pr111922.c new file mode 100644 index 00000000000..4f429d741c7 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr111922.c @@ -0,0 +1,29 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fno-tree-fre" } */ + +void f2 (void); +void f4 (int, int, int); +struct A { int a; }; +struct B { struct A *b; int c; } v; + +static int +f1 (x, y) + struct C *x; + struct A *y; +{ + (v.c = v.b->a) || (v.c = v.b->a); + f2 (); +} + +static void +f3 (int x, int y) +{ + int b = f1 (0, ~x); + f4 (0, 0, v.c); +} + +void +f5 (void) +{ + f3 (0, 0); +} -- 2.41.0