From patchwork Thu Sep 3 04:28:55 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yongqiang Tian X-Patchwork-Id: 2297229 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20251104 header.b=jEW2u/YI; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org; envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from vm01.sourceware.org (vm01.sourceware.org [IPv6:2620:52:6:3111::32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4hb67g2R4Qz1xvg for ; Thu, 03 Sep 2026 14:29:33 +1000 (AEST) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 0B1ED4BA23E3 for ; Thu, 3 Sep 2026 04:29:31 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0B1ED4BA23E3 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20251104 header.b=jEW2u/YI X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-pj1-x102a.google.com (mail-pj1-x102a.google.com [IPv6:2607:f8b0:4864:20::102a]) by sourceware.org (Postfix) with ESMTPS id E99E24BA2E1B for ; Thu, 3 Sep 2026 04:29:03 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org E99E24BA2E1B Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org E99E24BA2E1B Authentication-Results: sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::102a ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1788409744; cv=none; b=fVYCoTGmZoBxSjHsJ52Aa0XygBW3b1ivX3tLD2qKx6NE4d0W2CamrCVwVV8Ah4JtOHcYdEtfXxy26hvLB8EudnR+TstsviplmZbuEdKVfMbMPb6XGRnlzPb1y5oCiPQEbkmdaBK9bGhLyLdom2VQi0761JXc9S2tMZCEIXOziP4= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1788409744; c=relaxed/simple; bh=vlIDicmUVYb3oH4r3eiRjJHWejucNJhwwESbuumMKlc=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=TmNKf3t6IkOrNSnQDYvQnYiIz3AbAd6EPWYysFf9tCVwWPurljLIcH6sD1QEWLCL7hrObB8CQBIFeueAVDvTXLHbhuMrNR+eVYM1gp/vsDggtIFvB4gJ7wC4pGKFTK8Vr6sX+P+/43uYzUPTnEiq7pxE49PgEih+erg6H2RYJxs= ARC-Authentication-Results: i=1; sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20251104 header.b=jEW2u/YI DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E99E24BA2E1B Received: by mail-pj1-x102a.google.com with SMTP id 98e67ed59e1d1-3856d6fbcb3so1800765a91.2 for ; Wed, 02 Sep 2026 21:29:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1788409743; x=1789014543; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=O0EJ3jJhYXwyAMc3rIX2KdRUDbtgeNZIkL2lXEjzc6I=; b=jEW2u/YI4BPrlwEtt8eWSH91d3aNghxwf1UOQYbktAYoMJTBmTDqE0g3HB7ANrwq4w hUz3LFaXtGb78T2dQ1WGpGNuLoQOV9K4ZLN8AsFwI6IsFZrhll7VlV8Z4Lw1JsIe6ZSH Rv+uT6IPXrnw8wd9uOdS3sx3LevazOSnueImC4KV1u7dBhJjfCAcEFUDmb622H9TpcKd sjA+CymQDABuVfkSrNd2AkX85uYPwx2eErjYmtyXn/VacaR6hW+1B9+mIyZkP6DWpl+T sva+kJuoPOFfh724o5r/SDglNPiulSKv4nEy7wzeFsHYvQcl89px36MDpelMerjW3y3t DqfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788409743; x=1789014543; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=O0EJ3jJhYXwyAMc3rIX2KdRUDbtgeNZIkL2lXEjzc6I=; b=f8YXC5gKToEx7KWQ6NMkWTz/gUuO3XECfpI3riWfRufUh5wM15XFkud9BdiBMO/CuW WsQXrZ3IHCwYAz0eJbUj94CriKUZUHOaGRfwQeRB8mgOSeSbyMoSg08CxwKmZpviapjc gTdPj6pKtm4qBGU0swEPgKIOjbP/bZdNrS/n+mdS8vAkTBVFVoRE76+ko0Fosvr43dhM 2F6wQX+3O1CfEZSrtwC42hAwCuS6Ry2BRG4Dk29b4qAME1yp3bVmof809l/LiydbpWfs DSI5fo4hiL707GR8zgiIhtl0JqMxESdFKjDdgeH0343zI5cpxpZ42c+wN5V+xxELB6c1 tLqg== X-Gm-Message-State: AFuF++kTAmziqg/LzYVRlrAi0aIxhe2e8P5jsoXShVfSenODv9sB7M77 XLoD1DYJC8146BGyOXaSLP+3Bi290oECNBnFjtILtZIMUsbukEchL0yHtqGcPp2J X-Gm-Gg: AYBFou0RlbTHj4qtBgiNXTwIn54B54ziUX6VMMGV3E7jUdVGrNSA0A9seoUv+PsNbbg xhLzUhuXFUKBVdHkeZdvf3cbS2KWJu6ekOpWeFEK5AtCO0lYpTA3vr9yOSPtLQoFAa/zdb1ho+W HcoHrC+5D28LLoq8+ooFIbgy4mqI8vLNbQbRUTq1jvn8DUCjdSy6ZcjiGpnTWcPZ602pqaul5Qe mDEK97zq8alZzI7uZ4GGV+RubJjSYvXs54Fsi2pLgAhnAcThXwil6572o9Qj4qcm3EZkFDkEun+ RkxCvkRA7nuA7O1uv95pU3dQPC5i72fiWpjqJ3xvFQ3U9PZp9sOA11rPqUe1PqRqKJL9y0ZUo20 ke9F63T+PZmqSVDBAeLJnEPRvSRRVtyQ2LImyBsCu5P4mksfPmTuWPMlaDQArHE8007MMKaWRde VjOMuN7ADAIWlsoCT/8atEUMepU5rS4FTWlpPUZhe8HLB5fhpR8vGoEzsNzl0uIkN4S5s4pYxf6 19JVOuJ8zXd92+9rwt93TdzLROgXhmWKxEDUmUstvLSAXkNbEVobLf2Xpm8Xfj8LyC5HsUam3eL pa4YNaHtoJrPjqp2R0mx6mR9id+jPNsiZKs= X-Received: by 2002:a17:90a:fc45:b0:38f:efed:5448 with SMTP id 98e67ed59e1d1-39aedf2014amr14870342a91.8.1788409742652; Wed, 02 Sep 2026 21:29:02 -0700 (PDT) Received: from MU00187702X.monash.edu.au (dyn-49-127-58-10.its.monash.edu.au. [49.127.58.10]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-39b08d0d7e8sm2633379a91.16.2026.09.02.21.29.00 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 02 Sep 2026 21:29:01 -0700 (PDT) From: Yongqiang Tian To: gcc-patches@gcc.gnu.org Cc: vmakarov@redhat.com Subject: [PATCH] ira: Ignore debug insns in simple-LRA threshold [PR108784] Date: Thu, 3 Sep 2026 14:28:55 +1000 Message-ID: <20260903042855.25179-1-yqtian668@gmail.com> X-Mailer: git-send-email 2.50.1 MIME-Version: 1.0 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~incoming=patchwork.ozlabs.org@gcc.gnu.org The simple-LRA decision uses get_max_uid() as an approximation of the number of instructions. Debug instructions consume UIDs, so enabling debug information can cross the threshold and change register allocation and generated code. Use get_max_insn_count(), which excludes debug instructions, so the decision depends only on ordinary instructions. Add an -fcompare-debug regression test. Bootstrapped and regression tested on x86_64-pc-linux-gnu. PR debug/108784 gcc/ChangeLog: * ira.cc (ira): Use get_max_insn_count instead of get_max_uid when selecting simple LRA. gcc/testsuite/ChangeLog: * gcc.dg/pr108784.c: New test. Assisted-by: OpenAI Codex 5.6 Sol Assisted-by: Claude Signed-off-by: Yongqiang Tian --- gcc/ira.cc | 8 +++-- gcc/testsuite/gcc.dg/pr108784.c | 63 +++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/pr108784.c diff --git a/gcc/ira.cc b/gcc/ira.cc index 798a7f01c5d..dd8c64f5dcb 100644 --- a/gcc/ira.cc +++ b/gcc/ira.cc @@ -5765,9 +5765,11 @@ ira (FILE *f) lra_simple_p = (ira_use_lra_p && (num_used_regs >= (1U << 26) / last_basic_block_for_fn (cfun) - /* max uid is a good evaluation of the number of insns as most - optimizations are done on tree-SSA level. */ - || ((uint64_t) get_max_uid () + /* get_max_insn_count is a good evaluation of the number of insns + as most optimizations are done on tree-SSA level. Unlike + get_max_uid, it excludes debug insns, so the choice below does + not depend on debug information. */ + || ((uint64_t) get_max_insn_count () > (uint64_t) param_ira_simple_lra_insn_threshold * 1000))); if (lra_simple_p) diff --git a/gcc/testsuite/gcc.dg/pr108784.c b/gcc/testsuite/gcc.dg/pr108784.c new file mode 100644 index 00000000000..6a8eff6c3dd --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr108784.c @@ -0,0 +1,63 @@ +/* PR debug/108784 */ +/* { dg-do compile } */ +/* { dg-options "-O2 -w --param=ira-simple-lra-insn-threshold=1 -fcompare-debug" } */ + +extern unsigned external_mix (unsigned); + +/* These unused named locals generate debug insns without affecting code. */ +#define GHOST(P, I, N) unsigned ghost##P##I = x ^ (N) ^ (I) +#define GHOSTS_8(P, N) \ + GHOST (P, 0, N); GHOST (P, 1, N); GHOST (P, 2, N); GHOST (P, 3, N); \ + GHOST (P, 4, N); GHOST (P, 5, N); GHOST (P, 6, N); GHOST (P, 7, N) +#define GHOSTS_64(N) \ + GHOSTS_8 (a, N); GHOSTS_8 (b, N); GHOSTS_8 (c, N); GHOSTS_8 (d, N); \ + GHOSTS_8 (e, N); GHOSTS_8 (f, N); GHOSTS_8 (g, N); GHOSTS_8 (h, N) + +#define STEP(N, A, I, C) \ + do \ + { \ + GHOSTS_64 (N); \ + A = A * 33u + x + p[I]; \ + x = x * 1103515245u + A + (C); \ + __asm__ volatile ("" : "+r" (x)); \ + } \ + while (0) + +#define UNIT() \ + STEP (1u, a0, 0, 12345u); \ + STEP (2u, a1, 1, 12346u); \ + STEP (3u, a2, 2, 12347u); \ + STEP (4u, a3, 3, 12348u); \ + STEP (5u, a4, 4, 12349u); \ + STEP (6u, a5, 5, 12350u); \ + STEP (7u, a6, 6, 12351u); \ + STEP (8u, a7, 7, 12352u); \ + STEP (9u, a8, 0, 12353u); \ + STEP (10u, a9, 1, 12354u); \ + STEP (11u, a10, 2, 12355u); \ + STEP (12u, a11, 3, 12356u); \ + if ((x & 31u) == 7u) x ^= external_mix (x); + +#define REP_1() UNIT() +#define REP_2() REP_1() REP_1() + +__attribute__((noinline)) +unsigned +foo (unsigned x, const unsigned *p) +{ + unsigned a0 = x + p[0] + 1u; + unsigned a1 = x + p[1] + 2u; + unsigned a2 = x + p[2] + 3u; + unsigned a3 = x + p[3] + 4u; + unsigned a4 = x + p[4] + 5u; + unsigned a5 = x + p[5] + 6u; + unsigned a6 = x + p[6] + 7u; + unsigned a7 = x + p[7] + 8u; + unsigned a8 = x + p[0] + 9u; + unsigned a9 = x + p[1] + 10u; + unsigned a10 = x + p[2] + 11u; + unsigned a11 = x + p[3] + 12u; + REP_2 (); + return x + a0 + a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10 + + a11; +}