From patchwork Fri Jan 10 06:40:46 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandre Oliva X-Patchwork-Id: 104452 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 855BC3858D37 for ; Fri, 10 Jan 2025 06:43:25 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 855BC3858D37 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, secure) header.d=adacore.com header.i=@adacore.com header.a=rsa-sha256 header.s=google header.b=RXltJ+Ig X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-ua1-x931.google.com (mail-ua1-x931.google.com [IPv6:2607:f8b0:4864:20::931]) by sourceware.org (Postfix) with ESMTPS id 040123858C53 for ; Fri, 10 Jan 2025 06:40:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 040123858C53 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 040123858C53 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::931 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1736491257; cv=none; b=ghrfuAaIZ6ZhYDQzbgbMMxAQu8jlzVcsFgaH4VBaPSQYqyoCeUJb1XI+w2ivQ7mpHheT3iSuHfvwCmvm5Xv+oiK85m9b5KzdPBfoKXMiZQfjzYtzU6VeHW/WEDcHoQPwUpb3O5THwoAIcNOb83KvTPRLDOLkXIhtDzHe2MHn0pc= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1736491257; c=relaxed/simple; bh=AZ92pfbOmbXzGn0IFhgSHa1G7kG1QyPwIrRCHrWqvuM=; h=DKIM-Signature:From:To:Subject:MIME-Version:Date:Message-ID; b=kmJ4IzP/HRp+tLNBIroZkYyOC+p3Xg6gk6gCNQ1UsvkdWfqA6w9Yq6S3d44OqtL6KEcdAyvvkNf2hZiBbNVZzCQcgla+aaQs4cTYBOyLKKnSaqZ3fhJ5Ty78k4JKONvAzkRdQncUwt2MjgxfWi/Rzy4nv6gs0w6gk6R3N0YOxTg= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 040123858C53 Received: by mail-ua1-x931.google.com with SMTP id a1e0cc1a2514c-85bc5d0509bso464155241.1 for ; Thu, 09 Jan 2025 22:40:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1736491256; x=1737096056; darn=gcc.gnu.org; h=user-agent:message-id:date:organization:mime-version:subject:cc:to :from:from:to:cc:subject:date:message-id:reply-to; bh=7LfkXbGK4HHpuJA+Rju4UWkNtU2goYXcm9wje6N5DsI=; b=RXltJ+IgrVcQGr4bqe7y5CQFB0pQVB6VenWVQP19KjXH+wLjUnVSOVbrdK3oZHh4v9 jgeR4rj9J8l5B6cR4zqWCkhaLc6D+vJaT+wwZqLjYf2a3M+DfNn8QQpa8lc+P5OEbhmf fEfd8fyQrgNdUZkxoEOpL2xtdHsCr8R0QFIW/1LyR6a222/jtizXHAShVQHn5UDF7usn 58mxwrtApksbBg8198QVZFFiBufJZF+qUnxyQ9t4Cvt484nMYdFKx6tM6rm0wNpi3mVS yTUqTCWsRHX4Nz60ZiRJ/sRxuhE3IaH72HIp+TLTxneWiz3zJyGr36pvkMs+VGueCoak ioWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736491256; x=1737096056; h=user-agent:message-id:date:organization:mime-version:subject:cc:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=7LfkXbGK4HHpuJA+Rju4UWkNtU2goYXcm9wje6N5DsI=; b=VQRtzb7DKn92WTMCzbbQgL67XPzR/ZPSzz9VKuLaD40hhCNgWTGtnC4vblxEh63WQJ fcXZQ0Ugam7fH5KiDGp7xLj39P7kuyDWJovfX2YahGgpLluLmwbhRPO/pjQC1EtfmJTR s4r3l5k+TGPDig6Wn59/EULfeVkh//P/4fpGXzTSLCFQFyWLTR58YLaoMEjNmxTM8C6j ZTO/aMTUAHXICFFd1ErrDQvCriMH7uWBFSOHHPxXmaBs4otplTy7nAYuJvz3eAPb9/92 Gxm1gGXpw9hmykLtl1BTqOifdtu+hwOkXaOAwM+Svybit3FDTeMZp+5sudm4rD4mtgJn SdgA== X-Gm-Message-State: AOJu0YyZcJcX4uA/TrDTm9gwcIgpyLPbI+S2FZlt/8IuTi9gRSQPgDra yQ5JJ6Vj7OqaSuinPzoIdj3dQMxZ9FK9Wao0HJp22SiPnXbYTfDueKf48D901w4TTSq08vghW58 = X-Gm-Gg: ASbGncvn14FcVwvtwz4qsE26Pg12irloWcC6Aw0xEYfLMqlKPw1TSBVIi49Ilcs5EuM b8/9kr8eyU8K1O3cPhoVfyn00fAi7+lFynpMiCm7NO3jlKQ/Y/r+k2E/pDOFzBsrtG9xHC9AX1X Y9m7AkAsdhlBVoQGSlfzTRdd/fTLdhwfRYPhLHTyi0eyZCMSUrUsZeV7J5C4B3ZqgIEj1h8Xoc2 iTQGjlcbjUbyTt4j9bH1S/eg6tGOO09GQE0WjmmROgaWe7zUaCO X-Google-Smtp-Source: AGHT+IFnt53oiwEejOLJog45ikkYhavdDTFTgyOaHpLXI7n+rbh3qTqhtMm7y9H84nuGc8N/THZwVg== X-Received: by 2002:a05:6102:3a14:b0:4b2:5c2a:cc9d with SMTP id ada2fe7eead31-4b3d0dc0215mr9836657137.16.1736491256154; Thu, 09 Jan 2025 22:40:56 -0800 (PST) Received: from free.home ([2804:7f1:218b:ab6e:fda0:ed9c:e12e:80b7]) by smtp.gmail.com with ESMTPSA id a1e0cc1a2514c-8623154b03esm2157919241.22.2025.01.09.22.40.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 09 Jan 2025 22:40:55 -0800 (PST) Received: from livre (livre.home [172.31.160.2]) by free.home (8.15.2/8.15.2) with ESMTPS id 50A6ekxA951293 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 10 Jan 2025 03:40:46 -0300 From: Alexandre Oliva To: gcc-patches@gcc.gnu.org Cc: jakub@redhat.com, rguenther@suse.de Subject: [PATCH] [ifcombine] fix mask variable test to match use [PR118344] MIME-Version: 1.0 Organization: Free thinker, does not speak for AdaCore Date: Fri, 10 Jan 2025 03:40:46 -0300 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) X-Scanned-By: MIMEDefang 2.84 X-Spam-Status: No, score=-12.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, WEIRD_QUOTING 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 There was a cut&pasto in the rr_and_mask's adjustment to match the combined type: the test on whether there was a mask already was testing the wrong variable, and then it might crash or otherwise fail accessing an undefined mask. This only hit with checking enabled, and rarely at that. Regstrapped on x86_64-linux-gnu. Ok to install? for gcc/ChangeLog PR tree-optimization/118344 * gimple-fold.cc (fold_truth_andor_for_ifcombine): Fix typo in rr_and_mask's type adjustment test. for gcc/testsuite/ChangeLog PR tree-optimization/118344 * gcc.dg/field-merge-19.c: New. --- gcc/gimple-fold.cc | 2 +- gcc/testsuite/gcc.dg/field-merge-19.c | 41 +++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.dg/field-merge-19.c diff --git a/gcc/gimple-fold.cc b/gcc/gimple-fold.cc index 0ad92de3a218f..20b5024d861db 100644 --- a/gcc/gimple-fold.cc +++ b/gcc/gimple-fold.cc @@ -8644,7 +8644,7 @@ fold_truth_andor_for_ifcombine (enum tree_code code, tree truth_type, xlr_bitpos); else lr_mask = wi::shifted_mask (xlr_bitpos, lr_bitsize, false, rnprec); - if (rl_and_mask.get_precision ()) + if (rr_and_mask.get_precision ()) rr_mask = wi::lshift (wide_int::from (rr_and_mask, rnprec, UNSIGNED), xrr_bitpos); else diff --git a/gcc/testsuite/gcc.dg/field-merge-19.c b/gcc/testsuite/gcc.dg/field-merge-19.c new file mode 100644 index 0000000000000..5622baa52b0a3 --- /dev/null +++ b/gcc/testsuite/gcc.dg/field-merge-19.c @@ -0,0 +1,41 @@ +/* { dg-do compile } */ +/* { dg-options "-O3 -fchecking" } */ + +/* PR tree-optimization/118344 */ + +/* This used to ICE attempting to extend a mask variable after testing the + wrong mask variable. */ + +int d, e, g, h, i, c, j; +static short k; +char o; +static int *p; +static long *a; +int b[0]; +int q(int s, int t, int *u, int *v) { + for (int f = 0; f < s; f++) + if ((t & v[f]) != u[f]) + return 0; + return 1; +} +int w(int s, int t) { + int l[] = {t, t, t, t}, m[] = {e, e, 3, 1}; + int n = q(s, d, l, m); + return n; +} +int x(unsigned s) { + unsigned r; + if (s >= -1) + return 1; + r = 10000000; + while (s > 1 / r) + r /= 2; + return g ? 2 : 0; +} +void y() { + for (;;) { + b[w(8, *p)] = h; + for (; a + k; j = o) + i &= c = x(6) < 0; + } +}