[Bug c++/101095] Bogus "error: conflicting global module declaration" for abbreviated function template using placeholder type in noexcept

cvs-commit at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Mar 22 05:18:16 GMT 2022


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

--- Comment #3 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-11 branch has been updated by Jason Merrill
<jason@gcc.gnu.org>:

https://gcc.gnu.org/g:0a63e3ee2d5c9aa0e51aa1eb54c3d14c06418ac3

commit r11-9680-g0a63e3ee2d5c9aa0e51aa1eb54c3d14c06418ac3
Author: Jason Merrill <jason@redhat.com>
Date:   Wed Jul 14 17:10:49 2021 -0400

    c++: fix tree_contains_struct for C++ types [PR101095]

    Many of the types from cp-tree.def were only marked as having tree_common,
    when actually most of them have type_non_common.  This broke
    g++.dg/modules/xtreme-header-2, as the modules code relies on
    tree_contains_struct to know what bits it needs to stream.

    We don't seem to use type_non_common for TYPE_ARGUMENT_PACK, so I bumped it
    down to TS_TYPE_COMMON.  I tried doing the same in cp_tree_size, but that
    breaks without more extensive changes to tree_node_structure.

    Why do we need the init_ts function anyway?  It seems redundant with
    tree_node_structure.

            PR c++/101095

    gcc/cp/ChangeLog:

            * cp-objcp-common.c (cp_common_init_ts): Mark types as types.
            (cp_tree_size): Remove redundant entries.


More information about the Gcc-bugs mailing list