https://gcc.gnu.org/bugzilla/show_bug.cgi?id=50800
Matthias Kretz <kretz at kde dot org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |kretz at kde dot org --- Comment #9 from Matthias Kretz <kretz at kde dot org> --- I assume I hit the same issue. I got the testcase down to a few lines: #include <type_traits> template <typename L> typename std::remove_reference<L>::type foo(L &&lhs, int rhs); template <typename T> T d(T i) { enum { Size = sizeof(int) }; return foo(i, Size); } template <typename T> struct A { typedef int TA __attribute__((__may_alias__)); }; int main() { typedef A<int> V; typedef typename std::remove_reference<typename V::TA &>::type T; return d(1); } It only needs the -std=c++11 flag. Tested to fail: 4.8.0/1/2/3 and 4.9.0/1/2 (4.9.2 is 20140924). Backtrace from 4.9.2 snapshot: /opt/gcc-4.9-snapshot/include/c++/4.9.2/type_traits:1488:5: internal compiler error: in finish_member_declaration, at cp/semantics.c:2827 { typedef _Tp type; }; ^ 0x6395c0 finish_member_declaration(tree_node*) ../.././gcc/cp/semantics.c:2827 0x5b975d instantiate_class_template_1 ../.././gcc/cp/pt.c:9244 0x5b975d instantiate_class_template(tree_node*) ../.././gcc/cp/pt.c:9445 0x61039d complete_type(tree_node*) ../.././gcc/cp/typeck.c:134 0x5a8531 tsubst(tree_node*, tree_node*, int, tree_node*) ../.././gcc/cp/pt.c:12163 0x5acac7 tsubst_function_type ../.././gcc/cp/pt.c:11344 0x5a7e7f tsubst(tree_node*, tree_node*, int, tree_node*) ../.././gcc/cp/pt.c:12081 0x5ae8fe tsubst_decl ../.././gcc/cp/pt.c:10596 0x5a822f tsubst(tree_node*, tree_node*, int, tree_node*) ../.././gcc/cp/pt.c:11543 0x5b09fb instantiate_template_1 ../.././gcc/cp/pt.c:15580 0x5b09fb instantiate_template(tree_node*, tree_node*, int) ../.././gcc/cp/pt.c:15630 0x5b6c2e 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:15979 0x574031 add_template_candidate_real ../.././gcc/cp/call.c:2998 0x571984 add_template_candidate ../.././gcc/cp/call.c:3095 0x571984 add_candidates ../.././gcc/cp/call.c:5169 0x5755d9 perform_overload_resolution ../.././gcc/cp/call.c:3904 0x5770ea build_new_function_call(tree_node*, vec<tree_node*, va_gc, vl_embed>**, bool, int) ../.././gcc/cp/call.c:3981 0x639891 finish_call_expr(tree_node*, vec<tree_node*, va_gc, vl_embed>**, bool, bool, int) ../.././gcc/cp/semantics.c:2358 0x5a1b34 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) ../.././gcc/cp/pt.c:14861 0x5a519c tsubst_expr ../.././gcc/cp/pt.c:14048