re PR c++/69481 (ICE with C++11 alias using with templates)
authorNathan Sidwell <nathan@acm.org>
Wed, 14 Dec 2016 16:43:07 +0000 (16:43 +0000)
committerNathan Sidwell <nathan@gcc.gnu.org>
Wed, 14 Dec 2016 16:43:07 +0000 (16:43 +0000)
PR c++/69481
* cp-tree.h (TYPE_TEMPLATE_INFO_MAYBE_ALIAS): Always use
TYPE_ALIAS_TEMPLATE_INFO for aliases.

From-SVN: r243656

gcc/cp/ChangeLog
gcc/cp/cp-tree.h

index 24ceb04..3404e88 100644 (file)
@@ -1,3 +1,9 @@
+2016-12-14  Nathan Sidwell  <nathan@acm.org>
+
+       PR c++/69481
+       * cp-tree.h (TYPE_TEMPLATE_INFO_MAYBE_ALIAS): Always use
+       TYPE_ALIAS_TEMPLATE_INFO for aliases.
+
 2016-12-13  Nathan Sidwell  <nathan@acm.org>
 
        PR c++/69481
index cc7ca87..89bb9b2 100644 (file)
@@ -3049,18 +3049,18 @@ extern void decl_shadowed_for_var_insert (tree, tree);
         ? CLASSTYPE_TEMPLATE_INFO (NODE)                               \
         : NULL_TREE)))
 
-/* Template information for an alias template type.  */
+/* Template information (if any) for an alias type.  */
 #define TYPE_ALIAS_TEMPLATE_INFO(NODE)                                 \
   (DECL_LANG_SPECIFIC (TYPE_NAME (NODE))                               \
    ? DECL_TEMPLATE_INFO (TYPE_NAME (NODE))                             \
    : NULL_TREE)
 
-/* If NODE is a specialization of an alias template, this accessor
-   returns the template info for the alias template.  Otherwise behave
-   as TYPE_TEMPLATE_INFO.  */
+/* If NODE is a type alias, this accessor returns the template info
+   for the alias template (if any).  Otherwise behave as
+   TYPE_TEMPLATE_INFO.  */
 #define TYPE_TEMPLATE_INFO_MAYBE_ALIAS(NODE)                           \
-  (TYPE_ALIAS_P (NODE) && DECL_LANG_SPECIFIC (TYPE_NAME (NODE))                \
-   ? DECL_TEMPLATE_INFO (TYPE_NAME (NODE))                             \
+  (TYPE_ALIAS_P (NODE)                                                 \
+   ? TYPE_ALIAS_TEMPLATE_INFO (NODE)                                   \
    : TYPE_TEMPLATE_INFO (NODE))
 
 /* Set the template information for an ENUMERAL_, RECORD_, or