Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2195306/?format=api
{ "id": 2195306, "url": "http://patchwork.ozlabs.org/api/patches/2195306/?format=api", "web_url": "http://patchwork.ozlabs.org/project/gcc/patch/83fe4071-7005-4f17-9724-9ffa8b4b69cf@gmail.com/", "project": { "id": 17, "url": "http://patchwork.ozlabs.org/api/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, "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<83fe4071-7005-4f17-9724-9ffa8b4b69cf@gmail.com>", "list_archive_url": null, "date": "2026-02-10T18:02:48", "name": "[3/13] Coarray shared memory library", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "66a0e78b9e29ff4c4287d7b848b00b81708c15ed", "submitter": { "id": 78264, "url": "http://patchwork.ozlabs.org/api/people/78264/?format=api", "name": "Jerry D", "email": "jvdelisle2@gmail.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/gcc/patch/83fe4071-7005-4f17-9724-9ffa8b4b69cf@gmail.com/mbox/", "series": [ { "id": 491719, "url": "http://patchwork.ozlabs.org/api/series/491719/?format=api", "web_url": "http://patchwork.ozlabs.org/project/gcc/list/?series=491719", "date": "2026-02-10T17:55:35", "name": "[1/13] Coarray shared memory library", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/491719/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2195306/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2195306/checks/", "tags": {}, "related": [], "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=20230601 header.b=On+ZhzmX;\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=20230601 header.b=On+ZhzmX", "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.214.173" ], "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 4f9TvT2Xnsz1xvb\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 11 Feb 2026 05:03:32 +1100 (AEDT)", "from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id EB1284BA2E3D\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 10 Feb 2026 18:03:29 +0000 (GMT)", "from mail-pl1-f173.google.com (mail-pl1-f173.google.com\n [209.85.214.173])\n by sourceware.org (Postfix) with ESMTPS id EEDB24BA2E11\n for <gcc-patches@gcc.gnu.org>; Tue, 10 Feb 2026 18:02:50 +0000 (GMT)", "by mail-pl1-f173.google.com with SMTP id\n d9443c01a7336-2a962230847so8656825ad.3\n for <gcc-patches@gcc.gnu.org>; Tue, 10 Feb 2026 10:02:50 -0800 (PST)", "from [10.168.168.23] ([50.37.179.80])\n by smtp.gmail.com with ESMTPSA id\n d9443c01a7336-2aadc397d98sm92239855ad.18.2026.02.10.10.02.48\n (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n Tue, 10 Feb 2026 10:02:49 -0800 (PST)" ], "DKIM-Filter": [ "OpenDKIM Filter v2.11.0 sourceware.org EB1284BA2E3D", "OpenDKIM Filter v2.11.0 sourceware.org EEDB24BA2E11" ], "DMARC-Filter": "OpenDMARC Filter v1.4.2 sourceware.org EEDB24BA2E11", "ARC-Filter": "OpenARC Filter v1.0.0 sourceware.org EEDB24BA2E11", "ARC-Seal": "i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1770746571; cv=none;\n b=Nqu8nU0M3+f6OZxttWXY/vpmZi2Tdd8m8jjnRhIMbvUp7c95kufMXGHOdN203dcs3MBOUkQ9dvOUofK4bGTpr/8YIke41ONr8rpouNX8Qf4C4UEW7DHK+bz10b6kmr6BK+UWEx/SxVrZggiw8ZKJChQMnTsMFBjkNVXCwWhUGbw=", "ARC-Message-Signature": "i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1770746571; c=relaxed/simple;\n bh=XPNhfTUvw/qhvBC9FbrJ9ICM/PSvllEjAN0n7KVIk8k=;\n h=DKIM-Signature:Message-ID:Date:MIME-Version:To:From:Subject;\n b=hEKzR2+RBBICF6RQdt8NicD1umKbPDYu6j2Sc08oExrnUeV/yV0CM9ZBL4GyNnbM4uhHYMiw05J12HSKd6j61dhti4wAiXALR88dtYvdhEyzEre8Gq0N/be+FPfWihipgBdMN9p0E5kITRvEFWcnaE3Kq5KtLXG3uwGo+eNrEp8=", "ARC-Authentication-Results": "i=1; server2.sourceware.org", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=gmail.com; s=20230601; t=1770746570; x=1771351370; 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=XPNhfTUvw/qhvBC9FbrJ9ICM/PSvllEjAN0n7KVIk8k=;\n b=On+ZhzmX6dFm+tTWwDNE+4Kpm/LUnUQ4i6iXbb2jLQLmgmRsvjQbmH3ehPIg3Z7ofY\n eFFSZBrZz334kHbkF3b1yH/49uaAW39Afx2ixmWw37Em31r6wknj2nO7SzIjSF+HV2OZ\n v3vdCZ9DhFw7GuyzFZpmz9/Nf8QGsNALffM5A3arXuumxHXl9ztD/PT7Pa/jikw5UZYo\n vpvyDLgN97t36RaidarWUxAmzowEI6Dderj2epmGdwIVONOz9L5mbMudNIhDfCuvgMU2\n 42/BBdccrunFliZGzyzdWuKtK0TycYvz8md5JLdZerHd0sfjBGDs4w7UBctMlKXIZJsU\n IQPw==", "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20230601; t=1770746570; x=1771351370;\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=XPNhfTUvw/qhvBC9FbrJ9ICM/PSvllEjAN0n7KVIk8k=;\n b=SOsQBNHfActZigh2mBnW/JLvwjJNEJ8ZZmLQK8fECE9DqN5Yu6BASk4xkWliq16CA2\n NLSAcKyenLJi/6rGPQxThJHxkbFt5B0nIu1JbdqYmfwjOhhOAzrd8XibnAEV7EtAyQwf\n PjWs/zu0CHfMh1gYyPkBZjNqUdEIzlUWiuo5umDAp2phpWkl1OrIoMrPyKJhE7Yo0a2+\n GSA79ShMDAkBZ1mcJJeb44hiw1nPALbUOXoZETDWCAMMKDhr6JP50AKTEHr+DLBUyla4\n 1r+IfgaNuAwhXg8ee0y3zTYiRVhJmNYvI2f3UhlrarinZieJZwF4xK5yq1tf3BNBnPOP\n hGAg==", "X-Forwarded-Encrypted": "i=1;\n AJvYcCX4LvjVao3sO/HWBOgHpPEeNlcDmANkz7OTxVf0nLRehpcBfeFPjAAYd93BFe9U7BznzYF/+9482BTS0w==@gcc.gnu.org", "X-Gm-Message-State": "AOJu0Yx9MJ9R5FmuDC6Gf/E9Z3sIN5Z7ULziQE2eSVzG7PuxSYOFkh/D\n p1WQqzEUDSZc7AvJqenJI90fSz5DGC0vje+E8WKSvcCb/BBrDBPrhhPJ", "X-Gm-Gg": "AZuq6aJ8o5IcNphv3wTj/GCVFtRT3Q2jV6juCOOZTyGc014ido1CQCi1NAtHjoeQkkV\n +HMlL6/maC/ijkl7EQArYxenVJLyraKVvRfTBrBdcYw+/Vo7wZ/9ZAnyTbCyy79witBK2UGZl53\n /EhGPw5K9GYxaIi/f0EsMDDQRaHKV8TDVK8gF90htoWC9CI+gUe5pff+6DCcfZRTPlTFYxyy/yH\n FFsbyqNjCeZFmFVvI+ZHUDSX6zi7l6PxWFt09SsRO8d2c4K+nzLdSveMdkJx/VFk8R1f5T53S2x\n Lo7HOYKC4cVWACCeFMBf+xhYz+G2bH4UAO57BfMSP3x3tM22hS/f6KZdkXGBodeS/MJXgE4MkAh\n iowlLhRWTnQwpNMSR9zAuwISUGVbJgrV/SDNXn/gcY4qy7HoV0oUFR7yzTY0R7HgbcmwsU0Puju\n G23IT44RRsi1VMPClYSGIxv3X56GI=", "X-Received": "by 2002:a17:902:ce91:b0:2aa:daf9:6980 with SMTP id\n d9443c01a7336-2aadaf96dafmr107487355ad.27.1770746569709;\n Tue, 10 Feb 2026 10:02:49 -0800 (PST)", "Content-Type": "multipart/mixed; boundary=\"------------pk9OweX0T0rWwRrBuwV04ESX\"", "Message-ID": "<83fe4071-7005-4f17-9724-9ffa8b4b69cf@gmail.com>", "Date": "Tue, 10 Feb 2026 10:02:48 -0800", "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": "Tobias Burnus <tburnus@baylibre.com>, Richard Biener <rguenther@suse.de>,\n Andre Vehreschild <vehre@gmx.de>, Jakub Jelinek <jakub@redhat.com>,\n Paul Richard Thomas <paul.richard.thomas@gmail.com>,\n FX Coudert <fxcoudert@gmail.com>, Toon Moene <toon@moene.org>", "From": "Jerry D <jvdelisle2@gmail.com>", "Subject": "[PATCH 3/13] Coarray shared memory library", "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": "Dear all, as requested,\n\nSee attached patch 3 of 13\n\nBest Regards,\n\nJerry", "diff": "commit fb5c98df7756526acf6c65e130db51b33360045f\nAuthor: Andre Vehreschild <vehre@gcc.gnu.org>\nDate: Wed Jun 18 09:32:19 2025 +0200\n\n Fortran: Fix coarray generation for char arrays and derived types.\n \n Fix the generation of a coarray, esp. its bounds, for char arrays.\n When a scalar char array is used in a co_reduce the coarray part was\n dropped.\n \n Furthermore for class typed dummy arguments where derived types were\n used as actual arguments the coarray generation is now done, too.\n \n gcc/fortran/ChangeLog:\n \n * trans-expr.cc (get_scalar_to_descriptor_type): Fix coarray\n generation.\n (copy_coarray_desc_part): New function to copy coarray dimensions.\n (gfc_class_array_data_assign): Use the new function.\n (gfc_conv_derived_to_class): Same.\n\ndiff --git a/gcc/fortran/trans-expr.cc b/gcc/fortran/trans-expr.cc\nindex 7949d936078..58dc1eb04c1 100644\n--- a/gcc/fortran/trans-expr.cc\n+++ b/gcc/fortran/trans-expr.cc\n@@ -90,6 +90,8 @@ static tree\n get_scalar_to_descriptor_type (tree scalar, symbol_attribute attr)\n {\n enum gfc_array_kind akind;\n+ tree *lbound = NULL, *ubound = NULL;\n+ int codim = 0;\n \n if (attr.pointer)\n akind = GFC_ARRAY_POINTER_CONT;\n@@ -100,8 +102,16 @@ get_scalar_to_descriptor_type (tree scalar, symbol_attribute attr)\n \n if (POINTER_TYPE_P (TREE_TYPE (scalar)))\n scalar = TREE_TYPE (scalar);\n- return gfc_get_array_type_bounds (TREE_TYPE (scalar), 0, 0, NULL, NULL, 1,\n-\t\t\t\t akind, !(attr.pointer || attr.target));\n+ if (TYPE_LANG_SPECIFIC (TREE_TYPE (scalar)))\n+ {\n+ struct lang_type *lang_specific = TYPE_LANG_SPECIFIC (TREE_TYPE (scalar));\n+ codim = lang_specific->corank;\n+ lbound = lang_specific->lbound;\n+ ubound = lang_specific->ubound;\n+ }\n+ return gfc_get_array_type_bounds (TREE_TYPE (scalar), 0, codim, lbound,\n+\t\t\t\t ubound, 1, akind,\n+\t\t\t\t !(attr.pointer || attr.target));\n }\n \n tree\n@@ -781,11 +791,43 @@ gfc_get_vptr_from_expr (tree expr)\n return NULL_TREE;\n }\n \n+static void\n+copy_coarray_desc_part (stmtblock_t *block, tree dest, tree src)\n+{\n+ tree src_type = TREE_TYPE (src);\n+ if (TYPE_LANG_SPECIFIC (src_type) && TYPE_LANG_SPECIFIC (src_type)->corank)\n+ {\n+ struct lang_type *lang_specific = TYPE_LANG_SPECIFIC (src_type);\n+ for (int c = 0; c < lang_specific->corank; ++c)\n+\t{\n+\t int dim = lang_specific->rank + c;\n+\t tree codim = gfc_rank_cst[dim];\n+\n+\t if (lang_specific->lbound[dim])\n+\t gfc_conv_descriptor_lbound_set (block, dest, codim,\n+\t\t\t\t\t lang_specific->lbound[dim]);\n+\t else\n+\t gfc_conv_descriptor_lbound_set (\n+\t block, dest, codim, gfc_conv_descriptor_lbound_get (src, codim));\n+\t if (dim + 1 < lang_specific->corank)\n+\t {\n+\t if (lang_specific->ubound[dim])\n+\t\tgfc_conv_descriptor_ubound_set (block, dest, codim,\n+\t\t\t\t\t\tlang_specific->ubound[dim]);\n+\t else\n+\t\tgfc_conv_descriptor_ubound_set (\n+\t\t block, dest, codim,\n+\t\t gfc_conv_descriptor_ubound_get (src, codim));\n+\t }\n+\t}\n+ }\n+}\n+\n void\n gfc_class_array_data_assign (stmtblock_t *block, tree lhs_desc, tree rhs_desc,\n \t\t\t bool lhs_type)\n {\n- tree tmp, tmp2, type;\n+ tree lhs_dim, rhs_dim, type;\n \n gfc_conv_descriptor_data_set (block, lhs_desc,\n \t\t\t\tgfc_conv_descriptor_data_get (rhs_desc));\n@@ -796,15 +838,18 @@ gfc_class_array_data_assign (stmtblock_t *block, tree lhs_desc, tree rhs_desc,\n \t\t gfc_conv_descriptor_dtype (rhs_desc));\n \n /* Assign the dimension as range-ref. */\n- tmp = gfc_get_descriptor_dimension (lhs_desc);\n- tmp2 = gfc_get_descriptor_dimension (rhs_desc);\n+ lhs_dim = gfc_get_descriptor_dimension (lhs_desc);\n+ rhs_dim = gfc_get_descriptor_dimension (rhs_desc);\n+\n+ type = lhs_type ? TREE_TYPE (lhs_dim) : TREE_TYPE (rhs_dim);\n+ lhs_dim = build4_loc (input_location, ARRAY_RANGE_REF, type, lhs_dim,\n+\t\t\tgfc_index_zero_node, NULL_TREE, NULL_TREE);\n+ rhs_dim = build4_loc (input_location, ARRAY_RANGE_REF, type, rhs_dim,\n+\t\t\tgfc_index_zero_node, NULL_TREE, NULL_TREE);\n+ gfc_add_modify (block, lhs_dim, rhs_dim);\n \n- type = lhs_type ? TREE_TYPE (tmp) : TREE_TYPE (tmp2);\n- tmp = build4_loc (input_location, ARRAY_RANGE_REF, type, tmp,\n-\t\t gfc_index_zero_node, NULL_TREE, NULL_TREE);\n- tmp2 = build4_loc (input_location, ARRAY_RANGE_REF, type, tmp2,\n-\t\t gfc_index_zero_node, NULL_TREE, NULL_TREE);\n- gfc_add_modify (block, tmp, tmp2);\n+ /* The corank dimensions are not copied by the ARRAY_RANGE_REF. */\n+ copy_coarray_desc_part (block, lhs_desc, rhs_desc);\n }\n \n /* Takes a derived type expression and returns the address of a temporary\n@@ -920,6 +965,7 @@ gfc_conv_derived_to_class (gfc_se *parmse, gfc_expr *e, gfc_symbol *fsym,\n \t\t\t\t\t\t gfc_expr_attr (e));\n \t gfc_add_modify (&parmse->pre, gfc_conv_descriptor_dtype (ctree),\n \t\t\t gfc_get_dtype (type));\n+\t copy_coarray_desc_part (&parmse->pre, ctree, parmse->expr);\n \t if (optional)\n \t\tparmse->expr = build3_loc (input_location, COND_EXPR,\n \t\t\t\t\t TREE_TYPE (parmse->expr),\n", "prefixes": [ "3/13" ] }