[prev in list] [next in list] [prev in thread] [next in thread]
List: gcc-fortran
Subject: Re: [Patch] Fortran: Fix same_type_as
From: Harald Anlauf via Fortran <fortran () gcc ! gnu ! org>
Date: 2021-09-29 20:38:34
Message-ID: 1b742211-e9fe-dd8f-d852-e2da9bc1c3dd () gmx ! de
[Download RAW message or body]
Hi Tobias,
Am 29.09.21 um 09:48 schrieb Tobias Burnus:
> Early ping ;-) – but actually I do want to explain some parts of my
> patch, what I forgot in my first patch email.
>
> Note that while "class(t)" is of declared type when
> unallocated/unassociated, "class(*)" is not. Thus, when
> unassociated/unallocated, "same_type_as(class_star, class_star)" is
> .false. Code wise, this implies the extra check for class_star._vtab ==
> NULL while class_t._vtab is always set and, thus, class._vtab->hash is
> always available. (Unchanged in this patch, but probably not obvious
> without reading the standard.)
>
> On 28.09.21 18:25, Tobias Burnus wrote:
>> - if (UNLIMITED_POLY (a))
>> + bool unlimited_poly_a = UNLIMITED_POLY (a);
>> + bool unlimited_poly_b = UNLIMITED_POLY (b);
good move. This help in making the code more readable. :-)
> Those variables are needed as we add component refs later, which then
> cause UNLIMITED_POLY to evaluate false. UNLIMITED_POLY operates on on
> expr->ts – thus, it already caters for derived-type accesses.
>> + if (unlimited_poly_a)
>> {
>> - tmp = gfc_class_vptr_get (a->symtree->n.sym->backend_decl);
> This caused the ICE as backend_decl was NULL. Additionally, it assumes
> that the sym and not some component of it is the requested
> unlimited-polymorphic object. Without the latter issue, a simple
> gfc_get_symbol_decl() around the argument would be sufficient.
>> + se1.want_pointer = 1;
>> + gfc_add_vptr_component (a);
>
> The gfc_add_vptr_component handles expr->ref->type == REF_COMPONENT
> properly. As also used for the "else if" branch, DT are handled properly.
>
> I think the rest of the patch is obvious.
LGTM. Also the coverage by the testcase looks good.
I believe this fixed a few other PRs:
- pr71703 ([9/10/11/12 Regression])
- pr84007
I haven't checked pr54618 ;-)
Thanks for the patch!
Harald
>
> Tobias
>
> -----------------
> Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201,
> 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer:
> Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München;
> Registergericht München, HRB 106955
>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic