public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Sandra Loosemore <sandra@codesourcery.com>
To: "gcc-patches@gcc.gnu.org" <gcc-patches@gcc.gnu.org>,
	"fortran@gcc.gnu.org" <fortran@gcc.gnu.org>,
	Tobias Burnus <tobias@codesourcery.com>
Subject: [PATCH, Fortran] set version field in CFI_cdesc_t to CFI_VERSION
Date: Thu, 1 Jul 2021 00:00:44 -0600	[thread overview]
Message-ID: <f4f6b3f1-e98a-f01e-7012-cb010760a597@codesourcery.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 549 bytes --]

This patch fixes the failures in interoperability/fc-descriptor-8.f90 in 
my just-posted TS 29113 testsuite:

https://gcc.gnu.org/pipermail/gcc-patches/2021-July/574115.html

The problem here is that the routines that copy between GFC and CFI 
descriptors think they both use the same version number conventions, but 
the GFC descriptors' version is zero-initialized elsewhere and 
CFI_VERSION is defined to be 1.  It seems incorrect to expect the 
internal and external descriptor ABIs to be in lock step together anyway.

OK to check in?

-Sandra

[-- Attachment #2: cfi-version.patch --]
[-- Type: text/x-patch, Size: 1701 bytes --]

commit b0edc2d3287d6ed52a43010b92c4158c6208ef11
Author: Sandra Loosemore <sandra@codesourcery.com>
Date:   Wed Jun 30 19:28:22 2021 -0700

    Fortran: set version field in CFI_cdesc_t to CFI_VERSION
    
    When converting a GFC descriptor to a CFI descriptor, it was
    incorrectly copying the version number from the former to the latter.
    It should be using the value of CFI_VERSION instead (currently 1).
    Going the other direction, the GFC version field is initialized to
    zero elsewhere, so do that here too.
    
    2021-06-30  Tobias Burnus  <tobias@codesourcery.com>
    	    Sandra Loosemore  <sandra@codesourcery.com>
    
    	libgfortran/
    	* runtime/ISO_Fortran_binding.c (cfi_desc_to_gfc_desc):
    	Initialize version field to 0.
    	(gfc_desc_to_cfi_desc): Initialize version field to CFI_VERSION.

diff --git a/libgfortran/runtime/ISO_Fortran_binding.c b/libgfortran/runtime/ISO_Fortran_binding.c
index 0978832..73fb4c4 100644
--- a/libgfortran/runtime/ISO_Fortran_binding.c
+++ b/libgfortran/runtime/ISO_Fortran_binding.c
@@ -60,7 +60,7 @@ cfi_desc_to_gfc_desc (gfc_array_void *d, CFI_cdesc_t **s_ptr)
   else
     GFC_DESCRIPTOR_SIZE (d) = s->elem_len;
 
-  d->dtype.version = s->version;
+  d->dtype.version = 0;
   GFC_DESCRIPTOR_RANK (d) = (signed char)s->rank;
 
   d->dtype.attribute = (signed short)s->attribute;
@@ -104,7 +104,7 @@ gfc_desc_to_cfi_desc (CFI_cdesc_t **d_ptr, const gfc_array_void *s)
 
   d->base_addr = GFC_DESCRIPTOR_DATA (s);
   d->elem_len = GFC_DESCRIPTOR_SIZE (s);
-  d->version = s->dtype.version;
+  d->version = CFI_VERSION;
   d->rank = (CFI_rank_t)GFC_DESCRIPTOR_RANK (s);
   d->attribute = (CFI_attribute_t)s->dtype.attribute;
 

             reply	other threads:[~2021-07-01  6:01 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-01  6:00 Sandra Loosemore [this message]
2021-07-01  7:26 ` Tobias Burnus

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f4f6b3f1-e98a-f01e-7012-cb010760a597@codesourcery.com \
    --to=sandra@codesourcery.com \
    --cc=fortran@gcc.gnu.org \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=tobias@codesourcery.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).