https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86946
Bug ID: 86946 Summary: ice: canonical types differ for identical types Product: gcc Version: 8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: dcb314 at hotmail dot com Target Milestone: --- This C++ source code template <typename a, typename c> auto d(a, c); template <long> class e; template <unsigned long f, unsigned b, typename> e<d(f, b)> d(); template <unsigned long f, unsigned b, typename> e<d(f, b)> d(); causes this ice: bug456.cc:4:63: internal compiler error: canonical types differ for identical ty pes ‘e<d(f, b)>’ and ‘e<d(f, b)>’ 4 | template <unsigned long f, unsigned b, typename> e<d(f, b)> d(); | ^ 0xa0a331 comptypes(tree_node*, tree_node*, int) ../../trunk/gcc/cp/typeck.c:1477 0x87ce6a decls_match(tree_node*, tree_node*, bool) ../../trunk/gcc/cp/decl.c:968 0x87d24f decls_match(tree_node*, tree_node*, bool) ../../trunk/gcc/cp/decl.c:1036 0x87d416 duplicate_decls(tree_node*, tree_node*, bool) ../../trunk/gcc/cp/decl.c:1363 The bug seems to be present since sometime before revision 262519