https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105054

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|---                         |11.3
           Priority|P3                          |P4

--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
Confirmed for the hang.  It hangs in f95-lang.cc:poplevel which does

391       /* Clear out the meanings of the local variables of this level.  */
392
393       for (subblock_node = decl_chain; subblock_node;
394            subblock_node = DECL_CHAIN (subblock_node))
395         if (DECL_NAME (subblock_node) != 0)
396           /* If the identifier was used or addressed via a local extern
decl,
397              don't forget that fact.  */
398           if (DECL_EXTERNAL (subblock_node))
399             {
400               if (TREE_USED (subblock_node))
401                 TREE_USED (DECL_NAME (subblock_node)) = 1;
402               if (TREE_ADDRESSABLE (subblock_node))
403                 TREE_ADDRESSABLE (DECL_ASSEMBLER_NAME (subblock_node)) = 1;
404             }

and this loop never terminates.

(gdb) p decl_chain
$1 = <var_decl 0x7ffff6523d80 _F.DA1>
(gdb) p decl_chain->common.chain
$2 = <var_decl 0x7ffff6523c60 ._F.DA0>
(gdb) p decl_chain->common.chain->common.chain
$3 = <var_decl 0x7ffff6523cf0 _F.DA0>
(gdb) p decl_chain->common.chain->common.chain->common.chain 
$4 = <var_decl 0x7ffff6523c60 ._F.DA0>

Reply via email to