Re: [PATCH] fortran PR95542 Fix ICE for deferred-length CHARACTER, result via host association

Jerry D <[email protected]>
Newsgroups gmane.comp.gcc.patches,gmane.comp.gcc.fortran
Message-ID <[email protected]>
On 8/16/26 12:02 PM, Mikael Morin wrote:
> Le 16/08/2026 à 02:29, Jerry D a écrit :
>> Attached is the patch I re-discovered while cleaning up worktrees.
>>
>> Regression tested on x86_64.
>>
>> OK for mainline?
>>
>> Regards,
>>
>> Jerry
>> ---
> 
>>
>> gfc_get_symbol_decl has an assert meant to verify that a deferred-length
>> string's length variable lives in the same scope as the symbol it
>> belongs to.  This is wrong when sym->backend_decl is itself the enclosing
>> function's FUNCTION_DECL.  The correct comparison is
>> DECL_CONTEXT (length) == sym->backend_decl directly.
>>
> 
>> diff --git a/gcc/fortran/trans-decl.cc b/gcc/fortran/trans-decl.cc
>> index 47b28c1d003..df5aef2fd86 100644
>> --- a/gcc/fortran/trans-decl.cc
>> +++ b/gcc/fortran/trans-decl.cc
>> @@ -1848,10 +1848,15 @@ gfc_get_symbol_decl (gfc_symbol * sym)
>>              gfc_add_decl_to_parent_function (length);
>>          }
>>
>> +          /* When the symbol's own backend_decl is a FUNCTION_DECL, its
>> +         DECL_CONTEXT is where that function itself is declared, not
>> +         where its locals live.  */
>>            gcc_assert (sym->backend_decl == current_function_decl
>>                ? DECL_CONTEXT (length) == current_function_decl
>> -              : (DECL_CONTEXT (sym->backend_decl)
>> -                 == DECL_CONTEXT (length)));
>> +              : (TREE_CODE (sym->backend_decl) == FUNCTION_DECL
>> +                 ? DECL_CONTEXT (length) == sym->backend_decl
>> +                 : (DECL_CONTEXT (sym->backend_decl)
>> +                == DECL_CONTEXT (length))));
> The first condition (sym->backend_decl == current_function_decl) is redundant 
> with the second one (TREE_CODE (sym->backend_decl) == FUNCTION_DECL); I think 
> the outer conditional can be removed completely.
> 
> OK with that change.

Agree, thanks for review, edit made. I will commit after a complete testsuite check

Thanks again,

Jerry
---
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.