[{"id":3683178,"web_url":"http://patchwork.ozlabs.org/comment/3683178/","msgid":"<qs4n86r5-r2no-o6s2-9882-o3o1r79411rs@fhfr.qr>","list_archive_url":null,"date":"2026-04-28T07:21:22","subject":"Re: [PATCH] range-op-float: Fix ICE on undefined_p ranges [PR125039]","submitter":{"id":4338,"url":"http://patchwork.ozlabs.org/api/people/4338/","name":"Richard Biener","email":"rguenther@suse.de"},"content":"On Tue, 28 Apr 2026, Jakub Jelinek wrote:\n\n> Hi!\n> \n> The following testcase ICEs at -O1 since r14-4153.\n> lower_bound/upper_bound methods on frange (and others) assert\n> they aren't called on undefined_p () ranges, because such ranges\n> don't really have any lower or upper bound.\n> Most fold_range virtual methods call empty_range_varying early\n> which checks if the operand ranges aren't undefined and in that case\n> return true and set r to varying, and then can safely use\n> lower_bound/upper_bound etc.\n> Now, operator_not_equal::fold_range did that until r14-4152 indirectly,\n> by calling it in frelop_early_resolve which it called unconditionally.\n> r14-4153 changed it not to call frelop_early_resolve in some cases\n> because it could misbehave as mentioned in the comment.\n> frelop_early_resolve has 3 conditionals it handles.\n>   if (!maybe_isnan (op1, op2) && relation_union (rel, my_rel) == my_rel)\n> doesn't apply for this case, because the\n>   if (rel == VREL_EQ && maybe_isnan (op1, op2))\n> condition means maybe_isnan (op1, op2) will be true.\n>   if (relation_intersect (rel, my_rel) == VREL_UNDEFINED)\n> is the condition which r14-4153 wanted to avoid.  And finally\n>   if (empty_range_varying (r, type, op1, op2))\n> is the condition the following patch readds, so that we don't ICE on those.\n> \n> Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk,\n> and later 16.2, 15.3 and 14.4?\n\nOK.\n\nThanks,\nRichard.\n\n> 2026-04-27  Jakub Jelinek  <jakub@redhat.com>\n> \n> \tPR tree-optimization/125039\n> \t* range-op-float.cc (operator_not_equal::fold_range): Call\n> \tempty_range_varying when not calling frelop_early_resolve.\n> \n> \t* gcc.c-torture/compile/pr125039.c: New test.\n> \n> --- gcc/range-op-float.cc.jj\t2026-03-27 10:17:14.477325142 +0100\n> +++ gcc/range-op-float.cc\t2026-04-27 15:22:16.383532968 +0200\n> @@ -759,6 +759,9 @@ operator_not_equal::fold_range (irange &\n>        // Avoid frelop_early_resolve() below as it could fold to FALSE\n>        // without regards to NANs.  This would be incorrect if trying\n>        // to fold x_5 != x_5 without prior knowledge of NANs.\n> +      // Still, if either operand is undefined, return VARYING.\n> +      if (empty_range_varying (r, type, op1, op2))\n> +\treturn true;\n>      }\n>    else if (frelop_early_resolve (r, type, op1, op2, trio, VREL_NE))\n>      return true;\n> --- gcc/testsuite/gcc.c-torture/compile/pr125039.c.jj\t2026-04-27 15:23:49.893940823 +0200\n> +++ gcc/testsuite/gcc.c-torture/compile/pr125039.c\t2026-04-27 15:23:19.196463488 +0200\n> @@ -0,0 +1,12 @@\n> +/* PR tree-optimization/125039 */\n> +\n> +void\n> +foo ()\n> +{\n> +  double b = b, c = c;\n> +  if (c)\n> +    c = -c;\n> +  double d = b == c ? b : c;\n> +  if (c != d)\n> +    foo ();\n> +}\n> \n> \tJakub\n> \n>","headers":{"Return-Path":"<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":["incoming@patchwork.ozlabs.org","gcc-patches@gcc.gnu.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","gcc-patches@gcc.gnu.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256\n header.s=susede2_rsa header.b=IPt9SRmt;\n\tdkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256\n header.s=susede2_ed25519 header.b=dLfP9TEK;\n\tdkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de\n header.a=rsa-sha256 header.s=susede2_rsa header.b=IPt9SRmt;\n\tdkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256\n header.s=susede2_ed25519 header.b=dLfP9TEK;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=38.145.34.32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n\tdkim=pass (1024-bit key,\n unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256\n header.s=susede2_rsa header.b=IPt9SRmt;\n\tdkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256\n header.s=susede2_ed25519 header.b=dLfP9TEK;\n\tdkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de\n header.a=rsa-sha256 header.s=susede2_rsa header.b=IPt9SRmt;\n\tdkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256\n header.s=susede2_ed25519 header.b=dLfP9TEK","sourceware.org;\n dmarc=pass (p=none dis=none) header.from=suse.de","sourceware.org; spf=pass smtp.mailfrom=suse.de","server2.sourceware.org;\n arc=none smtp.remote-ip=195.135.223.130","smtp-out1.suse.de;\n\tnone"],"Received":["from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g4X1b5Bjxz1yHX\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 28 Apr 2026 17:21:52 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 64AFD4BABF10\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 28 Apr 2026 07:21:50 +0000 (GMT)","from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130])\n by sourceware.org (Postfix) with ESMTPS id B79294B9DB42\n for <gcc-patches@gcc.gnu.org>; Tue, 28 Apr 2026 07:21:23 +0000 (GMT)","from murzim.nue2.suse.org (unknown [10.168.4.243])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest\n SHA256)\n (No client certificate requested)\n by smtp-out1.suse.de (Postfix) with ESMTPS id 6CEB66A939;\n Tue, 28 Apr 2026 07:21:22 +0000 (UTC)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 64AFD4BABF10","OpenDKIM Filter v2.11.0 sourceware.org B79294B9DB42"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org B79294B9DB42","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org B79294B9DB42","ARC-Seal":"i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1777360883; cv=none;\n b=X3RQYniyhpW0q7CSinLQBMshX3nIXY7oWr24H6sGxeFYUW+tax+clh5SOhxrfnMdjPL/LVGYBMOhf6TGUyCtpTkyicE16N1DggfUlXotxPg3zq331cwJdUOGI/wdvth33/H7/Xh7HMHR/OnbLs6l9+Lm41Ld6f2k+IuNAd0hcHM=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1777360883; c=relaxed/simple;\n bh=+44YAKoluAMSqvUpnPsgbZ8630ioTDpJXH4193WpgWk=;\n h=DKIM-Signature:DKIM-Signature:DKIM-Signature:DKIM-Signature:Date:\n From:To:Subject:Message-ID:MIME-Version;\n b=Fj9b0jjYDNwR96t7vBYkAyToBMrkJFhHYzQrcvz3ZGd7bn5ndG4zPht07sMtOds1tO72ZMUuOHZguD4m1vs5E7laiqRHqMPxjyZnik2nDGrxpnUqw0WlkeGwJVk1PdVElWfPnCnmXdMm8iXoQ72+qSaqGyJEzE3EG9vY66lp96g=","ARC-Authentication-Results":"i=1; server2.sourceware.org","DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de;\n s=susede2_rsa;\n t=1777360882;\n h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:\n mime-version:mime-version:content-type:content-type:\n in-reply-to:in-reply-to:references:references;\n bh=HBV7lKgXNSRCN5cJ0hU+ir9/TTRwDXGATMdOTLNb724=;\n b=IPt9SRmt2zvBY7z50SD2vF6SubhEllZGbeazq6W/PWlSadjcyJc3dZUPjg5uoEa9lzPJf3\n 6BICDHtRcf+jwBCdQjBT8ynQOheIbpUtwK8dXwzG8/88ua+E58Nm/aNwqQr8DWDZOS9JSV\n XgEGKIMGQkuNl5os5S6yEsRYRnn6vmc=","v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de;\n s=susede2_ed25519; t=1777360882;\n h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:\n mime-version:mime-version:content-type:content-type:\n in-reply-to:in-reply-to:references:references;\n bh=HBV7lKgXNSRCN5cJ0hU+ir9/TTRwDXGATMdOTLNb724=;\n b=dLfP9TEKNsiEJZJQPjpkstNdx438y4uAJEetATB6zlGgClInbkZxs7Vg9BzKN9DgTfAqZo\n 5yEwr5Z+frORXqBA==","v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de;\n s=susede2_rsa;\n t=1777360882;\n h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:\n mime-version:mime-version:content-type:content-type:\n in-reply-to:in-reply-to:references:references;\n bh=HBV7lKgXNSRCN5cJ0hU+ir9/TTRwDXGATMdOTLNb724=;\n b=IPt9SRmt2zvBY7z50SD2vF6SubhEllZGbeazq6W/PWlSadjcyJc3dZUPjg5uoEa9lzPJf3\n 6BICDHtRcf+jwBCdQjBT8ynQOheIbpUtwK8dXwzG8/88ua+E58Nm/aNwqQr8DWDZOS9JSV\n XgEGKIMGQkuNl5os5S6yEsRYRnn6vmc=","v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de;\n s=susede2_ed25519; t=1777360882;\n h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:\n mime-version:mime-version:content-type:content-type:\n in-reply-to:in-reply-to:references:references;\n bh=HBV7lKgXNSRCN5cJ0hU+ir9/TTRwDXGATMdOTLNb724=;\n b=dLfP9TEKNsiEJZJQPjpkstNdx438y4uAJEetATB6zlGgClInbkZxs7Vg9BzKN9DgTfAqZo\n 5yEwr5Z+frORXqBA=="],"Date":"Tue, 28 Apr 2026 09:21:22 +0200 (CEST)","From":"Richard Biener <rguenther@suse.de>","To":"Jakub Jelinek <jakub@redhat.com>","cc":"Andrew MacLeod <amacleod@redhat.com>, gcc-patches@gcc.gnu.org","Subject":"Re: [PATCH] range-op-float: Fix ICE on undefined_p ranges [PR125039]","In-Reply-To":"<afBcnhD47GSb42_u@tucnak>","Message-ID":"<qs4n86r5-r2no-o6s2-9882-o3o1r79411rs@fhfr.qr>","References":"<afBcnhD47GSb42_u@tucnak>","MIME-Version":"1.0","Content-Type":"text/plain; charset=US-ASCII","X-Spamd-Result":"default: False [-4.30 / 50.00]; BAYES_HAM(-3.00)[100.00%];\n NEURAL_HAM_LONG(-1.00)[-1.000];\n NEURAL_HAM_SHORT(-0.20)[-1.000]; MIME_GOOD(-0.10)[text/plain];\n FROM_HAS_DN(0.00)[]; MIME_TRACE(0.00)[0:+]; TO_DN_SOME(0.00)[];\n MISSING_XM_UA(0.00)[]; ARC_NA(0.00)[];\n RCVD_COUNT_ZERO(0.00)[0]; RCPT_COUNT_THREE(0.00)[3];\n FROM_EQ_ENVFROM(0.00)[]; FUZZY_RATELIMITED(0.00)[rspamd.com];\n TO_MATCH_ENVRCPT_ALL(0.00)[];\n DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519];\n DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:email,range-op-float.cc:url]","X-BeenThere":"gcc-patches@gcc.gnu.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Gcc-patches mailing list <gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>","List-Archive":"<https://gcc.gnu.org/pipermail/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-request@gcc.gnu.org?subject=help>","List-Subscribe":"<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>","Errors-To":"gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"}}]