https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96863
Bug ID: 96863 Summary: [11 Regression] ICE: in output_constructor_regular_field, at varasm.c:5223 Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: gcc-bugs at marehr dot dialup.fu-berlin.de Target Milestone: --- Hi gcc-team, the following code ices: ```c++ #include <tuple> namespace seqan3 { template <typename, typename = void> struct pipeable_config_element; template <typename derived_t> struct pipeable_config_element<derived_t, void> {}; template <typename, typename value_t> struct pipeable_config_element { value_t value; }; struct gap_scheme { int gap = 1; }; template <typename... configs_t> struct configuration : std::tuple<configs_t...> { template <typename derived_t, typename value_t> constexpr configuration(pipeable_config_element<derived_t, value_t> const) {} template <typename...> constexpr configuration(std::tuple<> const) {} template <typename config_element_t> constexpr auto push_back(config_element_t) const { return configuration<configs_t..., config_element_t>{std::tuple{}}; } }; template <typename derived_t, typename value_t> configuration(pipeable_config_element<derived_t, value_t> const) -> configuration<derived_t>; } // namespace seqan3 namespace seqan3::align_cfg { template <typename gap_scheme_t> struct gap : pipeable_config_element<gap<gap_scheme_t>, gap_scheme_t> { gap() = default; constexpr gap(gap_scheme_t const) : pipeable_config_element<gap, gap_scheme_t>() {} }; } // namespace seqan3::align_cfg namespace seqan3::detail { struct method_local_tag : pipeable_config_element<method_local_tag> {}; } // namespace seqan3::detail namespace seqan3::align_cfg { seqan3::detail::method_local_tag method_local; template <typename scoring_scheme_t> struct scoring_scheme : pipeable_config_element<int, void> { scoring_scheme() = default; constexpr scoring_scheme(scoring_scheme_t) {}; }; struct aminoacid_scoring_scheme {}; template <typename config_t> struct alignment_fixture { config_t config; }; template <typename config_t> alignment_fixture(config_t) -> alignment_fixture<config_t>; inline constexpr auto align_config = seqan3::configuration{seqan3::align_cfg::method_local}.push_back( seqan3::align_cfg::gap{seqan3::gap_scheme{}}); static auto aa27_02 = [] { return alignment_fixture{align_config.push_back( seqan3::align_cfg::scoring_scheme{aminoacid_scoring_scheme{}})}; }(); } // namespace seqan3::align_cfg ``` https://godbolt.org/z/M4Mh1f with > g++-git -std=c++2a error: ``` ice.cpp:55:1: internal compiler error: in output_constructor_regular_field, at varasm.c:5223 55 | } // namespace seqan3::align_cfg | ^ Please submit a full bug report, with preprocessed source if appropriate. See <https://bugs.archlinux.org/> for instructions. ```