[{"id":3683111,"web_url":"http://patchwork.ozlabs.org/comment/3683111/","msgid":"<5AE3FCB1-3F24-45F0-9039-1BDCE3185C7D@gmail.com>","list_archive_url":null,"date":"2026-04-28T05:05:38","subject":"Re: [PATCH] ivopts: Fix up doloop support for enum and bitint types\n [PR125036]","submitter":{"id":1765,"url":"http://patchwork.ozlabs.org/api/people/1765/","name":"Richard Biener","email":"richard.guenther@gmail.com"},"content":"> Am 27.04.2026 um 23:11 schrieb Andrew Pinski <andrew.pinski@oss.qualcomm.com>:\n> \n> ﻿After r17-89-g78280307c78ead, ninter handles enum types so ivcannon\n> will also use enum types and now ninter returns an enum type here.\n> Also add_iv_candidate_for_doloop was expecting only integer types.\n> This fixes the issue by allowing non integer types for what ninter\n> returns and converts it into an integer type which is a full mode\n> integer type.\n> \n> Bootstrapped and tested on powerpc64le-linux-gnu.\n\nOk\n\nRichard \n\n\n>    PR tree-optimization/125036\n> \n> gcc/ChangeLog:\n> \n>    * tree-ssa-loop-ivopts.cc (add_iv_candidate_for_doloop): Don't\n>    assert on niniter being integer type. Convert to a full mode\n>    integer type if non integer or non-full mode integer type.\n> \n> gcc/testsuite/ChangeLog:\n> \n>    * gcc.dg/torture/pr125036-1.c: New test.\n> \n> Signed-off-by: Andrew Pinski <andrew.pinski@oss.qualcomm.com>\n> ---\n> gcc/testsuite/gcc.dg/torture/pr125036-1.c | 11 +++++++++++\n> gcc/tree-ssa-loop-ivopts.cc               | 11 ++++++++++-\n> 2 files changed, 21 insertions(+), 1 deletion(-)\n> create mode 100644 gcc/testsuite/gcc.dg/torture/pr125036-1.c\n> \n> diff --git a/gcc/testsuite/gcc.dg/torture/pr125036-1.c b/gcc/testsuite/gcc.dg/torture/pr125036-1.c\n> new file mode 100644\n> index 00000000000..7bd2b1c7d5c\n> --- /dev/null\n> +++ b/gcc/testsuite/gcc.dg/torture/pr125036-1.c\n> @@ -0,0 +1,11 @@\n> +/* PR tree-optimization/125036 */\n> +/* { dg-do compile } */\n> +\n> +enum a { b, c, d, e, f };\n> +int g;\n> +void h(int *);\n> +void j() {\n> +  enum a i = b;\n> +  for (; i < f; ++i)\n> +    h(&g);\n> +}\n> diff --git a/gcc/tree-ssa-loop-ivopts.cc b/gcc/tree-ssa-loop-ivopts.cc\n> index dfec607fd2e..776487d0f8b 100644\n> --- a/gcc/tree-ssa-loop-ivopts.cc\n> +++ b/gcc/tree-ssa-loop-ivopts.cc\n> @@ -5783,7 +5783,7 @@ add_iv_candidate_for_doloop (struct ivopts_data *data)\n> \n>   tree niter = niter_desc->niter;\n>   tree ntype = TREE_TYPE (niter);\n> -  gcc_assert (TREE_CODE (ntype) == INTEGER_TYPE);\n> +  gcc_assert (INTEGRAL_NB_TYPE_P (ntype));\n> \n>   tree may_be_zero = niter_desc->may_be_zero;\n>   if (may_be_zero && integer_zerop (may_be_zero))\n> @@ -5815,6 +5815,15 @@ add_iv_candidate_for_doloop (struct ivopts_data *data)\n>     base = fold_build2 (PLUS_EXPR, ntype, unshare_expr (niter),\n>            build_int_cst (ntype, 1));\n> \n> +  /* For non integer types or non-mode precision types,\n> +     convert directly to an integer type. */\n> +  if (TREE_CODE (ntype) != INTEGER_TYPE\n> +      || !type_has_mode_precision_p (ntype))\n> +    {\n> +      ntype = lang_hooks.types.type_for_mode (TYPE_MODE (ntype),\n> +                          TYPE_UNSIGNED (ntype));\n> +      base = fold_convert (ntype, base);\n> +    }\n> \n>   add_candidate (data, base, build_int_cst (ntype, -1), true, NULL, NULL, true);\n> }\n> --\n> 2.43.0\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 (2048-bit key;\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=Aoubw8Zh;\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 (2048-bit key,\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=Aoubw8Zh","sourceware.org;\n dmarc=pass (p=none dis=none) header.from=gmail.com","sourceware.org; spf=pass smtp.mailfrom=gmail.com","server2.sourceware.org;\n arc=none smtp.remote-ip=209.85.128.44"],"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 4g4T195zm8z1yHX\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 28 Apr 2026 15:06:20 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id A994D4B9DB6E\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 28 Apr 2026 05:06:17 +0000 (GMT)","from mail-wm1-f44.google.com (mail-wm1-f44.google.com\n [209.85.128.44])\n by sourceware.org (Postfix) with ESMTPS id A2FE34B9DB57\n for <gcc-patches@gcc.gnu.org>; Tue, 28 Apr 2026 05:05:51 +0000 (GMT)","by mail-wm1-f44.google.com with SMTP id\n 5b1f17b1804b1-488af96f6b2so144207525e9.0\n for <gcc-patches@gcc.gnu.org>; Mon, 27 Apr 2026 22:05:51 -0700 (PDT)","from smtpclient.apple\n (dynamic-077-007-128-247.77.7.pool.telefonica.de. [77.7.128.247])\n by smtp.gmail.com with ESMTPSA id\n 5b1f17b1804b1-48a77af1b86sm24555585e9.5.2026.04.27.22.05.48\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Mon, 27 Apr 2026 22:05:48 -0700 (PDT)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org A994D4B9DB6E","OpenDKIM Filter v2.11.0 sourceware.org A2FE34B9DB57"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org A2FE34B9DB57","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org A2FE34B9DB57","ARC-Seal":"i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1777352751; cv=none;\n b=ffT/KDFQSXLkRQEw06z6y6yLUl8jq7YklsYYsOdiROpgjYhR6Knf1qgIwbBEPDc1zbk3Mpk05pIayycMcASkH+K4hlyUteYe/RqupUjUxcBnj9IHdRKlZs/sNLiO08lAw9SM9LX4bX/toON1WYKF/+O1ElM1Z2pO0fCgxp0g4WY=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1777352751; c=relaxed/simple;\n bh=Jcjflt4PNfXKGMvVmO8GiBw/hLQRegIkmn+tWL1Kxvo=;\n h=DKIM-Signature:From:Mime-Version:Subject:Date:Message-Id:To;\n b=xWWd+TJghM5/slbBkwPO22Ch7c/rp/hRF3LPiXqaATXErtgVVerY/jid4aPDJDWl6t7dU6BRIufBKkJYql2Slpzd8t9KGohusqVhHJpv9sF7VcnkLHK0J1fv1bWoqg0HOMH7R3apMimhlp5B5/R8I1erYbMFS60e77R7kFXw7XE=","ARC-Authentication-Results":"i=1; server2.sourceware.org","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=gmail.com; s=20251104; t=1777352750; x=1777957550; darn=gcc.gnu.org;\n h=to:in-reply-to:cc:references:message-id:date:subject:mime-version\n :from:content-transfer-encoding:from:to:cc:subject:date:message-id\n :reply-to; bh=cFWyOz1dmSUpp6+wULllIe02GheN8dEej8JDQGNVGC8=;\n b=Aoubw8ZhHN3UGHAtKtYyaYbyaxuETy3rqiN316S9/fHKrRkZbR+4R1LONRtANJ7kwH\n Mol1eUqaiqCkPSS/OSRg2AoKmmafJ0pWaxLi9k6rT0Z2+yVmKKkVjsz08JDE+dHKBWpd\n rMiP+Ggfmey+vSIlY7Yb6V0jChbiEhSqyQdip14mjDmTPmwpE3wefy7VtglVVuFOHABB\n FcMmn04btJcIp/i9WauEU6xnrfI6xhsWgxZAX4GAeB8+miGc/MsJmbH+vSc+5Qm/yXUQ\n SMzdB7k/BWgh80o/MWww6YHxTXFaTSCWuPynb90ZQZh4pbOrXQirnSoSnkV5ptOSEi74\n CTww==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1777352750; x=1777957550;\n h=to:in-reply-to:cc:references:message-id:date:subject:mime-version\n :from:content-transfer-encoding:x-gm-gg:x-gm-message-state:from:to\n :cc:subject:date:message-id:reply-to;\n bh=cFWyOz1dmSUpp6+wULllIe02GheN8dEej8JDQGNVGC8=;\n b=gxWO7alICWww7Pgga0Cap+lIbibh35al2OM/jAhLoOKNUvDRWjd5Lqm+v1JfiJu0/b\n lMB2zTWtxjS6BZ0qpiH8cBfCwjRbwsK6mNM3xSoWVPOYYKiJ85qp8MRIAKSgK6LcNuTL\n RY9+yMeYsKoJd7oVg8z6AfkTulLoMcbpg9cjwORAOiNFbP7LrKzbzH5b+fpwCOIFTqwO\n I+FLcpNSxcUTQUDbMfhwLDxhhVfqBcNM51JTGO4xTp9DKBJUcYFrKXHzsk4UibQpbpc7\n 9s3H42fG3AR+SOanxvPM8Ui2Ijln4fIcuQJR5dv5vw6qW9jKJ8JC52GChRrvsyKmWiB5\n ylng==","X-Gm-Message-State":"AOJu0YxH31Thl/jal9TVspgpOUOuPfcwW6TGS5oF4BtLwpVZCt3121yQ\n X24Y2nTXNme4PNjY5lQ15tHstYZaz6+8gsqxx3h/bU5DkdkpaT3SwR/JolZ7Fg==","X-Gm-Gg":"AeBDievBllDwTO/ufGk6BhnH+QijJmXDUpLPCiVBjlJUXIOlWGKyqdpaKJrzGvD7Hqz\n kt7BLLKscyXdbeipJAIh0CjxqckOHK5jkMnyWA3xoqJwdxvsPqtaERBdSCqo8Qh2kQfif9MXi3f\n uprllPs4yGJWKW7jxvl/0x52e8wV0fzLWz/fk0FfFtL6ZHTje+ww+UnM31SpTXcfincg+N70JPY\n xsM85piZnldz+hl8yuR12+FCh5wjnDa+8e+wF4JgJoV7AoieMmxU06HsC8nLBd52mvzwzNmxA80\n gTDOKa3fWw7HI50bsSt3NzniSd1pN+fwN0pdEkAF3LOVlQgdtyb5I9aErQdI89WgqawJGwNO3gr\n HVouWrEFDavzT4wYpukQUJm2Qi3cU1JDK8vXsTQVnxYKDt8BQtLUa9lnYwUj5nUKwyBVGzjMch+\n DRJzKy0uew849P2+qJ5ucdpcl+1rs2fN2IbI5lZjaJdvzw4adCF0Omx8+MOpQh80lO1atPznC5E\n 4cGZvts37L79Ka6J3Eu8cTKSvpRsJHx00Fu0jVyHkOr","X-Received":"by 2002:a05:600c:1e8b:b0:489:1ff1:74d3 with SMTP id\n 5b1f17b1804b1-48a77b146e0mr21040085e9.20.1777352749435;\n Mon, 27 Apr 2026 22:05:49 -0700 (PDT)","Content-Type":"text/plain; charset=utf-8","Content-Transfer-Encoding":"quoted-printable","From":"Richard Biener <richard.guenther@gmail.com>","Mime-Version":"1.0 (1.0)","Subject":"Re: [PATCH] ivopts: Fix up doloop support for enum and bitint types\n [PR125036]","Date":"Tue, 28 Apr 2026 07:05:38 +0200","Message-Id":"<5AE3FCB1-3F24-45F0-9039-1BDCE3185C7D@gmail.com>","References":"<20260427211020.1450021-1-andrew.pinski@oss.qualcomm.com>","Cc":"gcc-patches@gcc.gnu.org,\n Andrew Pinski <andrew.pinski@oss.qualcomm.com>","In-Reply-To":"<20260427211020.1450021-1-andrew.pinski@oss.qualcomm.com>","To":"Andrew Pinski <andrew.pinski@oss.qualcomm.com>","X-Mailer":"iPhone Mail (23E261)","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"}}]