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

            Bug ID: 68608
           Summary: [concepts] ICE with with explicit class instantiation
           Product: gcc
           Version: 6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ryan.burn at gmail dot com
  Target Milestone: ---

The below code causes this ICE when compiled with

rnburn@localhost ~/test/explicit_concept $ g++17 --version
g++ (GCC) 6.0.0 20151123 (experimental)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

main.cpp:13:23: error: Two symbols with same comdat_group are not linked by the
same_comdat_group list.
 template struct A<int>;
                       ^

_ZN1AIiE1fEv/2 (int A<T>::f() requires predicate(!(C<T>)) [with T = int])
@0x7f63087cf2e0
  Type: function definition analyzed
  Visibility: forced_by_abi public weak comdat_group:_ZN1AIiE1fEv one_only
  previous sharing asm name: 1
  References: 
  Referring: 
  First run: 0
  Function flags: body
  Called by: 
  Calls: 
_ZN1AIiE1fEv/1 (int A<T>::f() requires predicate( C<T>) [with T = int])
@0x7f63087cf170
  Type: function definition analyzed
  Visibility: forced_by_abi public weak comdat_group:_ZN1AIiE1fEv one_only
  next sharing asm name: 2
  References: 
  Referring: 
  First run: 0
  Function flags: body
  Called by: 
  Calls: 
main.cpp:13:23: internal compiler error: symtab_node::verify failed
0x934e59 symtab_node::verify_symtab_nodes()
        ../../src-fix/gcc/symtab.c:1120
0x94823b symtab_node::checking_verify_symtab_nodes()
        ../../src-fix/gcc/cgraph.h:566
0x94823b symbol_table::compile()
        ../../src-fix/gcc/cgraphunit.c:2358
0x94a952 symbol_table::compile()
        ../../src-fix/gcc/cgraphunit.c:2514
0x94a952 symbol_table::finalize_compilation_unit()
        ../../src-fix/gcc/cgraphunit.c:2540
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <http://gcc.gnu.org/bugs.html> for instructions.


///////////////////////////////////////////////////////////////
template <class T> concept constexpr bool C = true;

template <class T>
struct A {
  int f() requires C<T> { return 1; }
  int f() requires !C<T> { return 2; }
};

int main() {
  return 0;
}

template struct A<int>;
///////////////////////////////////////////////////////////////

Reply via email to