https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70538
Bug ID: 70538
Summary: deprecated "access declaration" evokes gcc_unreachable
ICE
Product: gcc
Version: 6.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: jim at meyering dot net
Target Milestone: ---
While attempting to emit a diagnostic following this warning,
x.ii:11:3: warning: access declarations are deprecated in favour of
using-declarations; suggestion: add the ‘using’ keyword [-Wdeprecated]
gcc reaches a gcc_unreachable call at gcc/cp/pt.c:17317:
17312 /* Look for the clone. */
17313 FOR_EACH_CLONE (clone, spec)
17314 if (DECL_NAME (clone) == DECL_NAME (tmpl))
17315 return clone;
17316 /* We should always have found the clone by now. */
17317 gcc_unreachable ();
17318 return NULL_TREE;
Here is a 'creduce'd input that triggers that error:
$ g++ --version|head -1 && cat x.ii && ./cc1plus x.ii
g++ (GCC) 6.0.0 20160405 (experimental)
struct A;
template <typename> class C;
using PathComponentPiece = C<int>;
class B {
B(int);
template <typename T> B(T);
B(C<A>);
};
template <typename> class C : B {
using base_type = B;
base_type::base_type;
PathComponentPiece m_fn1() {}
};
x.ii:11:3: warning: access declarations are deprecated in favour of
using-declarations; suggestion: add the ‘using’ keyword [-Wdeprecated]
base_type::base_type;
^~~~~~~~~
x.ii: In substitution of ‘template<class T> C<A>::C(T) [with T = int]’:
x.ii:11:14: recursively required by substitution of ‘template<class T>
C<A>::C(T) [with T = int]’
x.ii:11:14: required from ‘class C<int>’
x.ii:12:30: required from here
x.ii:11:14: internal compiler error: in instantiate_template_1, at
cp/pt.c:17317
base_type::base_type;
^~~~~~~~~
0x62362a instantiate_template_1
../../gcc/cp/pt.c:17317
0x623a1c instantiate_template(tree_node*, tree_node*, int)
../../gcc/cp/pt.c:17449
0x624326 fn_type_unification(tree_node*, tree_node*, tree_node*, tree_node*
const*, unsigned int, tree_node*, unification_kind_t, int, bool, bool)
../../gcc/cp/pt.c:17808
0x5d085d add_template_candidate_real
../../gcc/cp/call.c:3089
0x5d0fbc add_template_candidate
../../gcc/cp/call.c:3171
0x5d0fbc add_candidates
../../gcc/cp/call.c:5344
0x5ce443 build_user_type_conversion_1
../../gcc/cp/call.c:3687
0x5cee30 implicit_conversion
../../gcc/cp/call.c:1863
0x5d02b8 add_function_candidate
../../gcc/cp/call.c:2121
0x5d0f5f add_candidates
../../gcc/cp/call.c:5354
0x5d14f4 build_new_method_call_1
../../gcc/cp/call.c:8293
0x5d14f4 build_new_method_call(tree_node*, tree_node*, vec<tree_node*, va_gc,
vl_embed>**, tree_node*, int, tree_node**, int)
../../gcc/cp/call.c:8489
0x6b5bce locate_fn_flags
../../gcc/cp/method.c:900
0x6b65d8 synthesized_method_walk
../../gcc/cp/method.c:1477
0x6b6f54 deduce_inheriting_ctor(tree_node*)
../../gcc/cp/method.c:1711
0x61273c tsubst_decl
../../gcc/cp/pt.c:11941
0x614b94 tsubst(tree_node*, tree_node*, int, tree_node*)
../../gcc/cp/pt.c:12817
0x6238b5 instantiate_template_1
../../gcc/cp/pt.c:17398
0x623a1c instantiate_template(tree_node*, tree_node*, int)
../../gcc/cp/pt.c:17449
0x623480 instantiate_template_1
../../gcc/cp/pt.c:17307
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.