get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/1.1/patches/2221617/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2221617,
    "url": "http://patchwork.ozlabs.org/api/1.1/patches/2221617/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/gcc/patch/b7d9dcdd-6638-4e12-8580-89696c06fd90@gmail.com/",
    "project": {
        "id": 17,
        "url": "http://patchwork.ozlabs.org/api/1.1/projects/17/?format=api",
        "name": "GNU Compiler Collection",
        "link_name": "gcc",
        "list_id": "gcc-patches.gcc.gnu.org",
        "list_email": "gcc-patches@gcc.gnu.org",
        "web_url": null,
        "scm_url": null,
        "webscm_url": null
    },
    "msgid": "<b7d9dcdd-6638-4e12-8580-89696c06fd90@gmail.com>",
    "date": "2026-04-10T00:52:46",
    "name": "[fortran] Fix Bug 94978 - [13/14/15/16 Regression] Bogus warning \"Array reference at (1) out of bounds ...\"",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "6d8950ae4368a500ce1e1677d142414e64131e93",
    "submitter": {
        "id": 78264,
        "url": "http://patchwork.ozlabs.org/api/1.1/people/78264/?format=api",
        "name": "Jerry D",
        "email": "jvdelisle2@gmail.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/gcc/patch/b7d9dcdd-6638-4e12-8580-89696c06fd90@gmail.com/mbox/",
    "series": [
        {
            "id": 499374,
            "url": "http://patchwork.ozlabs.org/api/1.1/series/499374/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/gcc/list/?series=499374",
            "date": "2026-04-10T00:52:46",
            "name": "[fortran] Fix Bug 94978 - [13/14/15/16 Regression] Bogus warning \"Array reference at (1) out of bounds ...\"",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/499374/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2221617/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2221617/checks/",
    "tags": {},
    "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=UsiIZp7B;\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=UsiIZp7B",
            "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.216.43"
        ],
        "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 4fsJFY5vfZz1yCv\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 10 Apr 2026 10:53:19 +1000 (AEST)",
            "from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 536174BA2E15\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 10 Apr 2026 00:53:17 +0000 (GMT)",
            "from mail-pj1-f43.google.com (mail-pj1-f43.google.com\n [209.85.216.43])\n by sourceware.org (Postfix) with ESMTPS id 605BA4BA2E0F\n for <gcc-patches@gcc.gnu.org>; Fri, 10 Apr 2026 00:52:49 +0000 (GMT)",
            "by mail-pj1-f43.google.com with SMTP id\n 98e67ed59e1d1-358d80f60ccso1087554a91.3\n for <gcc-patches@gcc.gnu.org>; Thu, 09 Apr 2026 17:52:49 -0700 (PDT)",
            "from [10.168.168.66] ([50.37.179.80])\n by smtp.gmail.com with ESMTPSA id\n 98e67ed59e1d1-35e4122344esm1053619a91.7.2026.04.09.17.52.47\n (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n Thu, 09 Apr 2026 17:52:47 -0700 (PDT)"
        ],
        "DKIM-Filter": [
            "OpenDKIM Filter v2.11.0 sourceware.org 536174BA2E15",
            "OpenDKIM Filter v2.11.0 sourceware.org 605BA4BA2E0F"
        ],
        "DMARC-Filter": "OpenDMARC Filter v1.4.2 sourceware.org 605BA4BA2E0F",
        "ARC-Filter": "OpenARC Filter v1.0.0 sourceware.org 605BA4BA2E0F",
        "ARC-Seal": "i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1775782369; cv=none;\n b=MuaPj0n6jlYduulhRV1UVsYQ/lCG8YPasT5rvJxo5uv/3WN0XbZto7OPTK5cJVNeYQe1NeO0brH9QU0qzalDFKSrwZslZlMHbLDaZoUSRZxDA2Qv+Md44ZzFo2ZB7hi0fi04YiRXhuPUq7m3s17uRh+2tPhti1fylAgBuSw51Q4=",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1775782369; c=relaxed/simple;\n bh=ZXOX817gdAbcJu1U2hOhvlic4TaVzRgfWo/6unCAVxc=;\n h=DKIM-Signature:Message-ID:Date:MIME-Version:To:From:Subject;\n b=NlxqYTxgfOHve0vyXmligCyWugrgrcITnHv2OmFJ9lVWd5xOTbHYeR9YywkbmARZ63Ts35bSL5OTR1GqqY/fnsmyLGmdsrjPCADhILZY9fIFu/TNn1WYxO7n/P5CWh7hSl6gB/6iEkFP0oRtZqT5or95tef5VO5HfCa7nPxS3pI=",
        "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=1775782368; x=1776387168; darn=gcc.gnu.org;\n h=autocrypt:subject:from:cc:to:content-language:user-agent\n :mime-version:date:message-id:from:to:cc:subject:date:message-id\n :reply-to; bh=q3/0TSgD0wIBpZor8WDc3NDyzUNTgraMQbWFLFsSP7o=;\n b=UsiIZp7BrEhfDh5+9DipcUVzQdGKZGP7ECNjAMStFiVdV3tpAU4O/M5SReMPnzn66a\n +m0W1vqTwzeL4dYj1yF+cxLhsBup1a4StSUDOpUgc7aVFmD09ykufj3UHvA4S69zdt6U\n DWHdg1IUh69oftjA/M0BQlooGx9W5L8QZBhM7zE7+UXhtL8Kbpp+ssAMkdmI/2w5SwjI\n 0MwExx0uCocC0cO+efs7iK5Q8FX2riMa4//WUzngzbP2TXZChoXWOBbfK2+I81NhOaI6\n /tZAhPNXunE3d828RknMgvWaTBymTelNjVxZKN348idJoVkqbg2lSSUSXRjUIjevKUI2\n DTFQ==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1775782368; x=1776387168;\n h=autocrypt:subject:from:cc:to:content-language:user-agent\n :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc\n :subject:date:message-id:reply-to;\n bh=q3/0TSgD0wIBpZor8WDc3NDyzUNTgraMQbWFLFsSP7o=;\n b=YQeFMjgSQ6gjJTDiSmjkbVyr7bUzOzL4RovXwXe92I5gA+pZwELwbFroDFrulhPg50\n l1WxRADPpzwu+s1tY5yOqkhly02xJ455+ofa7awQW4csWqtfnYCYW1JWj1Qg7T5XUOXK\n KwiBhdzNSVOa0cv9wqlS83MiFnqH7DhIQosN9BEPmp2OYpJ6XpJbu/rQc8JMCcmZFCka\n fU00YdAe/Zbp5gTB/Yz7SKQtEPl7EL1dPuttTuV0WjC3evXp3MWnP7qwjcqcWvTeiX6y\n 08AD9tB2lsf98VCFgpcHnCYOKrtNLxlk1QnEV8QOSDj8uz6BrjK65iGwfDK7ZC2VFtXk\n Q85Q==",
        "X-Forwarded-Encrypted": "i=1;\n AJvYcCWnuIok7MeqxlKWKbqQnqxd+kC7xlru0316PRYfe7vxQkUoaZRA0cEo2YhZ44BDJNPJWygRiFxxnzTbtQ==@gcc.gnu.org",
        "X-Gm-Message-State": "AOJu0YwyoIL2+/maJXzjCmcqdIBRrMoQEyF+CC1qlj6NSLCqvReZXsKP\n f/grN2W+jXOJx5HE5Gs4Sk5Ns1zf6vTUXq3QfZKnNCQjNFBqqhCxm9PA",
        "X-Gm-Gg": "AeBDieutbqxEVsciFvDMl8JeAgUFm6EsV/on74JqBlZgvg0OEEWjBRI/4dJPfBQ2O5G\n 8qDQIbuCPIadFEiv/WCeNFeV8w/Tz7YIgEPDN4Zo24d1ghlQr537SELWP+/69DJe5PSDaXhz7Zp\n hEGz/XqDiVT/Ku62wI7IMUGyxmaGPborfm0HhmhLPcyAhQFrtX0E67CWx1eTUxo4dv7eCgIn3mX\n pSrCNgyrC+aprGlfKM1DnUDVBQavBzT0tY2mxJi2/4fkDdNGl/Xa+RA5eaQ/dh0PFqFW/BIngxN\n TOdWENa1BtIrdpF/qNVcnpAdEQm1qO99sTW3xJ7Vm+Oab5ocPQegcSrDYfL7QxNP+5Irj0TQoBZ\n sMYF5ozI/EYoGdI4ROHjg3AixhBsHcxoXQ0aHT2egcUn3NNq/FBOeUTdhESPXQtO5cErrxvd2O4\n fBer3LbHDOmizFmSIPyKU1cnz9B4Y=",
        "X-Received": "by 2002:a17:90b:4d10:b0:35b:e553:9cc2 with SMTP id\n 98e67ed59e1d1-35e42847a40mr1209590a91.26.1775782368107;\n Thu, 09 Apr 2026 17:52:48 -0700 (PDT)",
        "Content-Type": "multipart/mixed; boundary=\"------------cWDi5lzKEf00OHHDaALvKp2c\"",
        "Message-ID": "<b7d9dcdd-6638-4e12-8580-89696c06fd90@gmail.com>",
        "Date": "Thu, 9 Apr 2026 17:52:46 -0700",
        "MIME-Version": "1.0",
        "User-Agent": "Mozilla Thunderbird",
        "Content-Language": "en-US",
        "To": "gfortran <fortran@gcc.gnu.org>, gcc-patches <gcc-patches@gcc.gnu.org>",
        "Cc": "Harald Anlauf <anlauf@gmx.de>, Thomas Koenig <tkoenig@netcologne.de>,\n Paul Richard Thomas <paul.richard.thomas@gmail.com>",
        "From": "Jerry D <jvdelisle2@gmail.com>",
        "Subject": "[PATCH,fortran] Fix Bug 94978 - [13/14/15/16 Regression] Bogus\n warning \"Array reference at (1) out of bounds ...\"",
        "Autocrypt": "addr=jvdelisle2@gmail.com; keydata=\n xjMEY5TlkxYJKwYBBAHaRw8BAQdAyrkRDhmJhSTTlV/50gJLlvliU6/Lm5C9ViKV8T9y1GnN\n HkplcnJ5IEQgPGp2ZGVsaXNsZTJAZ21haWwuY29tPsKJBBMWCAAxFiEEOFR0TS0390uh8dRV\n uWXAJaWpwWoFAmOU5ZMCGwMECwkIBwUVCAkKCwUWAgMBAAAKCRC5ZcAlpanBalsJAP4wdCiH\n 2Of9oZv1QWgZ/AVdbWFM3Fv47/WZQHOXfoZ9HgD6AkXrKeJ+6usST7PEaDJjptaViT1fLiYY\n V/6XaOKSsgLOOARjlOWTEgorBgEEAZdVAQUBAQdAdA7PczYnl07vnOT9oP/wvvMDd4HP09Zl\n g3LzwXQJWT8DAQgHwngEGBYIACAWIQQ4VHRNLTf3S6Hx1FW5ZcAlpanBagUCY5TlkwIbDAAK\n CRC5ZcAlpanBasF/AQCa5WjlsVpLsEiggZyT18MOJNAdeRd7wkGDUrwedHrvawD/cE1H+/Ms\n L1ZwvQiLfGdx8crigQqWTQyos4kH8Wx82wc=",
        "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"
    },
    "content": "Hi all,\n\nThe attached patch avoids the bogus warning. I completed regression testing on \nx86_64.\n\nI would appreciate others to take a look.\n\nOK to commit on mainline?\n\nRegards,\n\nJerry\n---\n\nfortran: Avoid bogus do-subscript warnings in skipped inner\n  loops [PR94978]\n\nDo not warn from an outer-loop bound substitution when a nested inner loop may\nbe zero-trip after that substitution, because the guarded array reference may\nthen be unreachable.\n\ngcc/fortran/ChangeLog:\n\n\tPR fortran/94978\n\t* frontend-passes.cc (evaluate_loop_bound): New helper.\n\t(inner_loop_may_be_skipped): New helper.\n\t(do_subscript): Skip outer-loop bound warnings when nested inner loops\n\tmay be zero-trip for the substituted bound.\n\ngcc/testsuite/ChangeLog:\n\n\tPR fortran/94978\n\t* gfortran.dg/pr94978.f90: New test.\n\nSigned-off-by: Christopher Albert <albert@tugraz.at>",
    "diff": "From f87d2443e27cafde0de1923cd186be92f9cef2a0 Mon Sep 17 00:00:00 2001\nFrom: Christopher Albert <albert@tugraz.at>\nDate: Sat, 28 Mar 2026 17:26:05 +0100\nSubject: [PATCH] fortran: Avoid bogus do-subscript warnings in skipped inner\n loops [PR94978]\n\nDo not warn from an outer-loop bound substitution when a nested inner loop may\nbe zero-trip after that substitution, because the guarded array reference may\nthen be unreachable.\n\ngcc/fortran/ChangeLog:\n\n\tPR fortran/94978\n\t* frontend-passes.cc (evaluate_loop_bound): New helper.\n\t(inner_loop_may_be_skipped): New helper.\n\t(do_subscript): Skip outer-loop bound warnings when nested inner loops\n\tmay be zero-trip for the substituted bound.\n\ngcc/testsuite/ChangeLog:\n\n\tPR fortran/94978\n\t* gfortran.dg/pr94978.f90: New test.\n\nSigned-off-by: Christopher Albert <albert@tugraz.at>\n---\n gcc/fortran/frontend-passes.cc        | 69 ++++++++++++++++++++++++++-\n gcc/testsuite/gfortran.dg/pr94978.f90 | 24 ++++++++++\n 2 files changed, 91 insertions(+), 2 deletions(-)\n create mode 100644 gcc/testsuite/gfortran.dg/pr94978.f90\n\ndiff --git a/gcc/fortran/frontend-passes.cc b/gcc/fortran/frontend-passes.cc\nindex 56d8e21b9f4..fa508794e20 100644\n--- a/gcc/fortran/frontend-passes.cc\n+++ b/gcc/fortran/frontend-passes.cc\n@@ -2746,6 +2746,66 @@ insert_index (gfc_expr *e, gfc_symbol *sym, mpz_t val, mpz_t ret)\n \n }\n \n+static bool\n+evaluate_loop_bound (gfc_expr *e, gfc_symbol *sym, mpz_t val, mpz_t ret)\n+{\n+  if (e->expr_type == EXPR_CONSTANT)\n+    {\n+      mpz_init_set (ret, e->value.integer);\n+      return true;\n+    }\n+\n+  return insert_index (e, sym, val, ret);\n+}\n+\n+/* Return true if any loop nested inside LOOP_INDEX is not provably entered\n+   after substituting OUTER_VAL for OUTER_SYM.  In that case the guarded array\n+   reference may never be evaluated, so do not warn from the outer loop alone.  */\n+\n+static bool\n+inner_loop_may_be_skipped (int loop_index, gfc_symbol *outer_sym, mpz_t outer_val)\n+{\n+  int k;\n+  do_t *lp;\n+\n+  FOR_EACH_VEC_ELT_FROM (doloop_list, k, lp, loop_index + 1)\n+    {\n+      gfc_code *loop = lp->c;\n+      int sgn, cmp;\n+      mpz_t do_start, do_end, do_step;\n+\n+      if (loop == NULL || loop->ext.iterator == NULL || loop->ext.iterator->var == NULL)\n+\treturn true;\n+\n+      if (!evaluate_loop_bound (loop->ext.iterator->step, outer_sym, outer_val, do_step))\n+\treturn true;\n+\n+      sgn = mpz_cmp_ui (do_step, 0);\n+      if (sgn == 0)\n+\t{\n+\t  mpz_clear (do_step);\n+\t  return true;\n+\t}\n+\n+      if (!evaluate_loop_bound (loop->ext.iterator->start, outer_sym, outer_val, do_start)\n+\t  || !evaluate_loop_bound (loop->ext.iterator->end, outer_sym, outer_val, do_end))\n+\t{\n+\t  mpz_clear (do_step);\n+\t  return true;\n+\t}\n+\n+      cmp = mpz_cmp (do_end, do_start);\n+      mpz_clear (do_start);\n+      mpz_clear (do_end);\n+      mpz_clear (do_step);\n+\n+      if ((sgn > 0 && cmp < 0) || (sgn < 0 && cmp > 0))\n+\treturn true;\n+    }\n+\n+  return false;\n+}\n+\n /* Check array subscripts for possible out-of-bounds accesses in DO\n    loops with constant bounds.  */\n \n@@ -2880,10 +2940,15 @@ do_subscript (gfc_expr **e)\n \t\t  mpz_clear (rem);\n \t\t}\n \n+\t      bool skip_start = have_do_start\n+\t\t\t\t&& inner_loop_may_be_skipped (j, do_sym, do_start);\n+\t      bool skip_end = have_do_end\n+\t\t\t      && inner_loop_may_be_skipped (j, do_sym, do_end);\n+\n \t      for (i = 0; i< ar->dimen; i++)\n \t\t{\n \t\t  mpz_t val;\n-\t\t  if (ar->dimen_type[i] == DIMEN_ELEMENT && have_do_start\n+\t\t  if (ar->dimen_type[i] == DIMEN_ELEMENT && have_do_start && !skip_start\n \t\t      && insert_index (ar->start[i], do_sym, do_start, val))\n \t\t    {\n \t\t      if (ar->as->lower[i]\n@@ -2909,7 +2974,7 @@ do_subscript (gfc_expr **e)\n \t\t      mpz_clear (val);\n \t\t    }\n \n-\t\t  if (ar->dimen_type[i] == DIMEN_ELEMENT && have_do_end\n+\t\t  if (ar->dimen_type[i] == DIMEN_ELEMENT && have_do_end && !skip_end\n \t\t      && insert_index (ar->start[i], do_sym, do_end, val))\n \t\t    {\n \t\t      if (ar->as->lower[i]\ndiff --git a/gcc/testsuite/gfortran.dg/pr94978.f90 b/gcc/testsuite/gfortran.dg/pr94978.f90\nnew file mode 100644\nindex 00000000000..5d64d227fdc\n--- /dev/null\n+++ b/gcc/testsuite/gfortran.dg/pr94978.f90\n@@ -0,0 +1,24 @@\n+! { dg-do compile }\n+! { dg-options \"-Wdo-subscript\" }\n+\n+implicit none\n+\n+integer(4) :: i, j\n+integer(4) :: pascal(0:8, 0:8)\n+\n+do i = 0, 8\n+  pascal(i, 0) = 1\n+  do j = 1, i - 1\n+    pascal(i, j) = pascal(i - 1, j) + pascal(i - 1, j - 1) ! { dg-bogus \"Array reference at \\\\(1\\\\) out of bounds\" }\n+  end do\n+  do j = i, 8\n+    pascal(i, j) = 0\n+  end do\n+  pascal(i, i) = 1\n+end do\n+\n+do i = 0, 8\n+  print '(9I4)', pascal(i, :)\n+end do\n+\n+end\n-- \n2.53.0\n\n",
    "prefixes": [
        "fortran"
    ]
}