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

Francois-Xavier Coudert <fxcoudert at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |fxcoudert at gcc dot gnu.org

--- Comment #4 from Francois-Xavier Coudert <fxcoudert at gcc dot gnu.org> ---
Currently still fails on x86_64-apple-darwin21
(https://gcc.gnu.org/pipermail/gcc-testresults/2021-December/743901.html), as
well as the future aarch64-apple-darwin21. Looks like a front-end issue.

$ g++ testsuite/g++.dg/modules/xtreme-header-5_a.H -std=c++2a -fmodule-header
-S
testsuite/g++.dg/modules/xtreme-header-5_a.H: internal compiler error: tree
check: expected var_decl or function_decl or field_decl or type_decl or
concept_decl or template_decl, have namespace_decl in get_merge_kind, at
cp/module.cc:10074

* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 4.1
  * frame #0: 0x000000010186bc24 cc1plus`internal_error(char const*, ...)
[inlined] auto_diagnostic_group::auto_diagnostic_group(this=<unavailable>) at
diagnostic.c:2018:14
    frame #1: 0x000000010186bc24 cc1plus`internal_error(gmsgid="tree check: %s,
have %s in %s, at %s:%d")
    frame #2: 0x000000010193d07c cc1plus`tree_check_failed(node=<unavailable>,
file=<unavailable>, line=<unavailable>, function=<unavailable>) at
tree.c:8702:18
    frame #3: 0x000000010192064c
cc1plus`template_info_decl_check(t=<unavailable>, f=<unavailable>,
l=<unavailable>, fn=<unavailable>) at cp-tree.h:651:21
    frame #4: 0x0000000100199f24
cc1plus`trees_out::get_merge_kind(this=<unavailable>, decl=0x00000001239bb738,
dep=<unavailable>) at cp-tree.h:639:3
    frame #5: 0x00000001001b1338
cc1plus`trees_out::decl_value(this=0x000000016fdfeaf0, decl=0x00000001239bb738,
dep=0x0000000000000000) at module.cc:7501:34
    frame #6: 0x00000001001b31bc
cc1plus`trees_out::decl_node(this=0x000000016fdfeaf0, decl=0x00000001239bb738,
ref=<unavailable>) at module.cc:8536:18
    frame #7: 0x00000001001b3dcc
cc1plus`trees_out::tree_node(this=0x000000016fdfeaf0, t=0x00000001239bb738) at
module.cc:9092:32
    frame #8: 0x00000001001b43d4
cc1plus`trees_out::chained_decls(this=0x000000016fdfeaf0,
decls=0x00000001239bb738) at module.cc:4840:17
    frame #9: 0x00000001001b4ffc
cc1plus`trees_out::core_vals(this=0x000000016fdfeaf0, t=0x000000012392a160) at
module.cc:6060:21
    frame #10: 0x00000001001ba1b0 cc1plus`trees_out::tree_value(tree_node*)
[inlined] trees_out::tree_node_vals(t=0x000000012392a160,
this=0x000000016fdfeaf0) at module.cc:7062:13
    frame #11: 0x00000001001ba1a4
cc1plus`trees_out::tree_value(this=0x000000016fdfeaf0, t=0x000000012392a160)
    frame #12: 0x00000001001b3cd8
cc1plus`trees_out::tree_node(this=0x000000016fdfeaf0, t=<unavailable>) at
module.cc:9097:14
    frame #13: 0x00000001001ba318
cc1plus`trees_out::write_function_def(this=0x000000016fdfeaf0,
decl=0x0000000123995d00) at module.cc:11354:13
    frame #14: 0x00000001001bd2d0
cc1plus`depset::hash::find_dependencies(this=0x0000000102310000,
module=<unavailable>) at module.cc:13130:31
    frame #15: 0x00000001001bd7cc
cc1plus`module_state::write(this=0x00000001040445b0, to=0x000000016fdfee30,
reader=<unavailable>) at module.cc:17617:27
    frame #16: 0x00000001001bee2c
cc1plus`finish_module_processing(reader=0x000000010380d200) at
module.cc:19873:21
    frame #17: 0x00000001001253a0 cc1plus`c_parse_final_cleanups() at
decl2.c:5310:28
    frame #18: 0x000000010130669c cc1plus`::compile_file() at toplev.c:452:25
    frame #19: 0x00000001019433ac cc1plus`toplev::main(this=0x000000016fdff1f8,
argc=<unavailable>, argv=<unavailable>) at toplev.c:2156:24
    frame #20: 0x00000001019442dc cc1plus`main(argc=21,
argv=0x000000016fdff368) at main.c:39:23
    frame #21: 0x00000001030510f4 dyld`start + 520

The tree that triggers the check is:

 <namespace_decl 0x133cd7738 __tc
    type <void_type 0x104064f18 void visited type_6 VOID
        align:8 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type
0x104064f18
        pointer_to_this <pointer_type 0x104064fc0>>
    external in_system_header VOID
/private/tmp/irun/include/c++/12.0.0/chrono:2097:34
    align:1 warn_if_not_align:0 context <function_decl 0x133cb1d00
__units_suffix_misc> abstract_origin <namespace_decl 0x10472eb58 __detail>
    module 0:./testsuite/g++.dg/modules/xtreme-header-5_a.H purview chain
<var_decl 0x133cf0360 __p>>

Reply via email to