[Bug c++/69481] ICE with C++11 alias using with templates
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69481 Andrew Pinski changed: What|Removed |Added Target Milestone|--- |7.0
[Bug c++/69481] ICE with C++11 alias using with templates
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69481 --- Comment #15 from Nathan Sidwell --- *** Bug 77629 has been marked as a duplicate of this bug. ***
[Bug c++/69481] ICE with C++11 alias using with templates
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69481 --- Comment #14 from Nathan Sidwell --- Author: nathan Date: Wed Dec 14 16:43:07 2016 New Revision: 243656 URL: https://gcc.gnu.org/viewcvs?rev=243656=gcc=rev Log: PR c++/69481 * cp-tree.h (TYPE_TEMPLATE_INFO_MAYBE_ALIAS): Always use TYPE_ALIAS_TEMPLATE_INFO for aliases. Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/cp-tree.h
[Bug c++/69481] ICE with C++11 alias using with templates
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69481 Nathan Sidwell changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #13 from Nathan Sidwell --- Fixed trunk r243624.
[Bug c++/69481] ICE with C++11 alias using with templates
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69481 --- Comment #12 from Nathan Sidwell --- Author: nathan Date: Tue Dec 13 20:43:08 2016 New Revision: 243624 URL: https://gcc.gnu.org/viewcvs?rev=243624=gcc=rev Log: cp/ PR c++/69481 * cp-tree.h (TYPE_TEMPLATE_INFO): Remove alias type checking. (TYPE_ALIAS_TEMPLATE_INFO): New. (TYPE_TEMPLATE_INFO_MAYBE_ALIAS): New. Use those macros. * error.c (dump_alias_template_specialization): Adjust. * pt.c (maybe_process_partial_specialization) iterative_has_template_arg, find_parameter_packs_r, alias_template_specialization_p, dependent_alias_template_spec_p, get_underlying_template, lookup_template_class_1, unify): Adjust template using decl access. testsuite/ PR c++/69481 * g++.dg/cpp0x/pr69481.C: New. (--This line, and those below, will be ignored-- Mgcc/testsuite/ChangeLog Agcc/testsuite/g++.dg/cpp0x/pr69481.C Mgcc/cp/cp-tree.h Mgcc/cp/error.c Mgcc/cp/ChangeLog Mgcc/cp/pt.c Added: trunk/gcc/testsuite/g++.dg/cpp0x/pr69481.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/cp-tree.h trunk/gcc/cp/error.c trunk/gcc/cp/pt.c trunk/gcc/testsuite/ChangeLog
[Bug c++/69481] ICE with C++11 alias using with templates
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69481 Andrew Pinski changed: What|Removed |Added CC||nathan at gcc dot gnu.org --- Comment #11 from Andrew Pinski --- *** Bug 78776 has been marked as a duplicate of this bug. ***
[Bug c++/69481] ICE with C++11 alias using with templates
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69481 PeteVine changed: What|Removed |Added CC||tulipawn at gmail dot com --- Comment #10 from PeteVine --- I've just hit the same ICE trying to build HHVM on aarch64 with g++7 20161202: [ 5%] Building CXX object third-party/folly/CMakeFiles/folly.dir/src/folly/ThreadCachedArena.cpp.o In file included from /mnt/odroid/hhvm/third-party/folly/folly/detail/ThreadLocalDetail.h:32:0, from /mnt/odroid/hhvm/third-party/folly/folly/ThreadLocal.h:59, from /mnt/odroid/hhvm/third-party/folly/folly/ThreadCachedArena.h:24, from /mnt/odroid/hhvm/third-party/folly/src/folly/ThreadCachedArena.cpp:17: /mnt/odroid/hhvm/third-party/folly/folly/Function.h:653:3: internal compiler error: same canonical type node for different types folly::Function::Traits and folly::detail::function::FunctionTraits SharedProxy asSharedProxy() && { ^~~ [ 5%] Building CXX object third-party/folly/CMakeFiles/folly.dir/src/folly/ThreadCachedArena.cpp.o In file included from /mnt/odroid/hhvm/third-party/folly/folly/detail/ThreadLocalDetail.h:32:0, from /mnt/odroid/hhvm/third-party/folly/folly/ThreadLocal.h:59, from /mnt/odroid/hhvm/third-party/folly/folly/ThreadCachedArena.h:24, from /mnt/odroid/hhvm/third-party/folly/src/folly/ThreadCachedArena.cpp:17: /mnt/odroid/hhvm/third-party/folly/folly/Function.h:653:3: internal compiler error: same canonical type node for different types folly::Function::Traits and folly::detail::function::FunctionTraits SharedProxy asSharedProxy() && { ^~~
[Bug c++/69481] ICE with C++11 alias using with templates
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69481 Akim Demaille changed: What|Removed |Added CC||akim.demaille at gmail dot com --- Comment #9 from Akim Demaille --- Hi all, Our of curiosity, could someone explain why GCC makes a difference between typedef and using here? I guess that if GCC does not map them all to the same type of structure, then it must be because it needs to tell the difference later. And I guess it's not a does/does-not support templates that makes the difference, as the grammar probably suffice here. Thanks in advance!
[Bug c++/69481] ICE with C++11 alias using with templates
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69481 --- Comment #8 from Markus Trippelsdorf --- (In reply to Wenzel Jakob from comment #7) > Correction: this ICE indeed goes away when building with > --enable-checking=release (though that doesn't seem like a nice solution). I > assume I used this check level in my trunk builds before and forgot it this > time. No. I guess you were right. You can switch checking on/off with -fchecking in gcc6/7. And indeed the testcase from PR77629 only hits the assert on trunk. Will try to bisect later.
[Bug c++/69481] ICE with C++11 alias using with templates
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69481 --- Comment #7 from Wenzel Jakob--- Correction: this ICE indeed goes away when building with --enable-checking=release (though that doesn't seem like a nice solution). I assume I used this check level in my trunk builds before and forgot it this time.
[Bug c++/69481] ICE with C++11 alias using with templates
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69481 --- Comment #6 from Wenzel Jakob--- No -- I am experimenting with the AVX512F backend and thus need to use the development branch.
[Bug c++/69481] ICE with C++11 alias using with templates
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69481 --- Comment #5 from Andrew Pinski --- (In reply to Wenzel Jakob from comment #4) > I'm pretty sure this is a recent regression -- GCC was able to compile the > code on Bug 77629 a month ago. Did you use a compiler from a release branch? If so --enable-checking=release is the default there while on the trunk it is always =yes.
[Bug c++/69481] ICE with C++11 alias using with templates
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69481 --- Comment #4 from Wenzel Jakob--- I'm pretty sure this is a recent regression -- GCC was able to compile the code on Bug 77629 a month ago.
[Bug c++/69481] ICE with C++11 alias using with templates
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69481 Markus Trippelsdorf changed: What|Removed |Added CC||trippels at gcc dot gnu.org --- Comment #3 from Markus Trippelsdorf --- Here's the reduced testcase from PR77629: markus@x4 tmp % cat out.ii template struct A; template using enable_if_t = typename A<_Cond>::type; templatestruct B; template struct C; template struct D; template struct B > { using Base = D; // typedef D Base; // OK using typename Base::Scalar; Scalar a; }; markus@x4 tmp % g++ -c out.ii out.ii:11:3: internal compiler error: same canonical type node for different types B ::type>::Base and D< > Scalar a; ^~ 0x79d2e4 comptypes(tree_node*, tree_node*, int) ../../gcc/gcc/cp/typeck.c:1437 0x6d769d resolve_typename_type(tree_node*, bool) ../../gcc/gcc/cp/pt.c:23721 0x79b874 structural_comptypes ../../gcc/gcc/cp/typeck.c:1204 0x778352 cp_parser_constructor_declarator_p ../../gcc/gcc/cp/parser.c:25376 0x778352 cp_parser_decl_specifier_seq ../../gcc/gcc/cp/parser.c:12874 0x787b59 cp_parser_member_declaration ../../gcc/gcc/cp/parser.c:22479 0x761230 cp_parser_member_specification_opt ../../gcc/gcc/cp/parser.c:22331 0x761230 cp_parser_class_specifier_1 ../../gcc/gcc/cp/parser.c:21496 0x763a29 cp_parser_class_specifier ../../gcc/gcc/cp/parser.c:21745 0x763a29 cp_parser_type_specifier ../../gcc/gcc/cp/parser.c:15971 0x777fc8 cp_parser_decl_specifier_seq ../../gcc/gcc/cp/parser.c:12889 0x786863 cp_parser_single_declaration ../../gcc/gcc/cp/parser.c:25975 0x786c13 cp_parser_template_declaration_after_parameters ../../gcc/gcc/cp/parser.c:25667 0x787623 cp_parser_explicit_template_declaration ../../gcc/gcc/cp/parser.c:25902 0x787623 cp_parser_template_declaration_after_export ../../gcc/gcc/cp/parser.c:25920 0x78e5d9 cp_parser_declaration ../../gcc/gcc/cp/parser.c:12209 0x78ce20 cp_parser_declaration_seq_opt ../../gcc/gcc/cp/parser.c:12139 0x78d192 cp_parser_translation_unit ../../gcc/gcc/cp/parser.c:4356 0x78d192 c_parse_file() ../../gcc/gcc/cp/parser.c:37714 0x8fa672 c_common_parse_file() ../../gcc/gcc/c-family/c-opts.c:1073
[Bug c++/69481] ICE with C++11 alias using with templates
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69481 Markus Trippelsdorf changed: What|Removed |Added CC||wen...@mitsuba-renderer.org --- Comment #2 from Markus Trippelsdorf --- *** Bug 77629 has been marked as a duplicate of this bug. ***
[Bug c++/69481] ICE with C++11 alias using with templates
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69481 Marek Polacek changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2016-03-02 CC||mpolacek at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #1 from Marek Polacek --- Started with r181118 aka PR c++/45114 - Support C++11 alias-declaration.