re PR c++/48969 (ICE with -std=c++0x)
authorJason Merrill <jason@redhat.com>
Tue, 7 Jun 2011 21:54:07 +0000 (17:54 -0400)
committerJason Merrill <jason@gcc.gnu.org>
Tue, 7 Jun 2011 21:54:07 +0000 (17:54 -0400)
PR c++/48969
PR c++/44175
gcc/c-family/
* c-common.c (max_tinst_depth): Lower default to 900.
gcc/cp/
* error.c (subst_to_string): New.
(cp_printer): Use it for 'S'.
(print_instantiation_partial_context_line): Handle subst context.
* pt.c (push_tinst_level): Handle subst context.
(deduction_tsubst_fntype): Don't track specific substitutions.
Use push_tinst_level.

From-SVN: r174772

151 files changed:
gcc/c-family/ChangeLog
gcc/c-family/c-common.c
gcc/cp/ChangeLog
gcc/cp/error.c
gcc/cp/pt.c
gcc/doc/invoke.texi
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/abi/mangle11.C
gcc/testsuite/g++.dg/abi/mangle12.C
gcc/testsuite/g++.dg/abi/mangle17.C
gcc/testsuite/g++.dg/abi/mangle20-2.C
gcc/testsuite/g++.dg/abi/pragma-pack1.C
gcc/testsuite/g++.dg/cpp0x/decltype26.C
gcc/testsuite/g++.dg/cpp0x/decltype28.C
gcc/testsuite/g++.dg/cpp0x/decltype29.C
gcc/testsuite/g++.dg/cpp0x/enum11.C
gcc/testsuite/g++.dg/cpp0x/forw_enum8.C
gcc/testsuite/g++.dg/cpp0x/lambda/lambda-errloc2.C
gcc/testsuite/g++.dg/cpp0x/pr47416.C
gcc/testsuite/g++.dg/ext/case-range2.C
gcc/testsuite/g++.dg/ext/case-range3.C
gcc/testsuite/g++.dg/gomp/for-19.C
gcc/testsuite/g++.dg/gomp/pr37533.C
gcc/testsuite/g++.dg/gomp/pr38639.C
gcc/testsuite/g++.dg/gomp/tpl-parallel-2.C
gcc/testsuite/g++.dg/inherit/base3.C
gcc/testsuite/g++.dg/inherit/using6.C
gcc/testsuite/g++.dg/init/placement4.C
gcc/testsuite/g++.dg/init/reference3.C
gcc/testsuite/g++.dg/lookup/scoped6.C
gcc/testsuite/g++.dg/lookup/using7.C
gcc/testsuite/g++.dg/other/abstract1.C
gcc/testsuite/g++.dg/other/error10.C
gcc/testsuite/g++.dg/other/error5.C
gcc/testsuite/g++.dg/other/field1.C
gcc/testsuite/g++.dg/other/offsetof5.C
gcc/testsuite/g++.dg/parse/bitfield2.C
gcc/testsuite/g++.dg/parse/constant4.C
gcc/testsuite/g++.dg/parse/crash20.C
gcc/testsuite/g++.dg/parse/invalid-op1.C
gcc/testsuite/g++.dg/parse/non-dependent2.C
gcc/testsuite/g++.dg/parse/template18.C
gcc/testsuite/g++.dg/tc1/dr152.C
gcc/testsuite/g++.dg/tc1/dr166.C
gcc/testsuite/g++.dg/tc1/dr176.C
gcc/testsuite/g++.dg/tc1/dr213.C
gcc/testsuite/g++.dg/template/access11.C
gcc/testsuite/g++.dg/template/access2.C
gcc/testsuite/g++.dg/template/access3.C
gcc/testsuite/g++.dg/template/access7.C
gcc/testsuite/g++.dg/template/arg7.C
gcc/testsuite/g++.dg/template/cond2.C
gcc/testsuite/g++.dg/template/crash13.C
gcc/testsuite/g++.dg/template/crash40.C
gcc/testsuite/g++.dg/template/crash7.C
gcc/testsuite/g++.dg/template/crash84.C
gcc/testsuite/g++.dg/template/ctor5.C
gcc/testsuite/g++.dg/template/defarg13.C
gcc/testsuite/g++.dg/template/defarg14.C
gcc/testsuite/g++.dg/template/dtor7.C
gcc/testsuite/g++.dg/template/eh2.C
gcc/testsuite/g++.dg/template/error2.C
gcc/testsuite/g++.dg/template/error43.C
gcc/testsuite/g++.dg/template/friend32.C
gcc/testsuite/g++.dg/template/injected1.C
gcc/testsuite/g++.dg/template/instantiate1.C
gcc/testsuite/g++.dg/template/instantiate3.C
gcc/testsuite/g++.dg/template/instantiate5.C
gcc/testsuite/g++.dg/template/instantiate7.C
gcc/testsuite/g++.dg/template/local6.C
gcc/testsuite/g++.dg/template/lookup2.C
gcc/testsuite/g++.dg/template/member5.C
gcc/testsuite/g++.dg/template/memfriend15.C
gcc/testsuite/g++.dg/template/memfriend16.C
gcc/testsuite/g++.dg/template/memfriend17.C
gcc/testsuite/g++.dg/template/memfriend7.C
gcc/testsuite/g++.dg/template/meminit1.C
gcc/testsuite/g++.dg/template/nested3.C
gcc/testsuite/g++.dg/template/non-type-template-argument-1.C
gcc/testsuite/g++.dg/template/nontype12.C
gcc/testsuite/g++.dg/template/nontype13.C
gcc/testsuite/g++.dg/template/nontype6.C
gcc/testsuite/g++.dg/template/pr23510.C
gcc/testsuite/g++.dg/template/pr35240.C
gcc/testsuite/g++.dg/template/ptrmem15.C
gcc/testsuite/g++.dg/template/ptrmem6.C
gcc/testsuite/g++.dg/template/qualified-id1.C
gcc/testsuite/g++.dg/template/qualttp20.C
gcc/testsuite/g++.dg/template/qualttp3.C
gcc/testsuite/g++.dg/template/qualttp4.C
gcc/testsuite/g++.dg/template/qualttp5.C
gcc/testsuite/g++.dg/template/qualttp6.C
gcc/testsuite/g++.dg/template/qualttp7.C
gcc/testsuite/g++.dg/template/qualttp8.C
gcc/testsuite/g++.dg/template/recurse.C
gcc/testsuite/g++.dg/template/recurse2.C
gcc/testsuite/g++.dg/template/ref5.C
gcc/testsuite/g++.dg/template/scope2.C
gcc/testsuite/g++.dg/template/sfinae10.C
gcc/testsuite/g++.dg/template/sfinae3.C
gcc/testsuite/g++.dg/template/sizeof3.C
gcc/testsuite/g++.dg/template/static9.C
gcc/testsuite/g++.dg/template/template-id-2.C
gcc/testsuite/g++.dg/template/typedef13.C
gcc/testsuite/g++.dg/template/typename4.C
gcc/testsuite/g++.dg/template/using14.C
gcc/testsuite/g++.dg/template/using2.C
gcc/testsuite/g++.dg/template/warn1.C
gcc/testsuite/g++.dg/warn/Wparentheses-13.C
gcc/testsuite/g++.dg/warn/Wparentheses-15.C
gcc/testsuite/g++.dg/warn/Wparentheses-16.C
gcc/testsuite/g++.dg/warn/Wparentheses-17.C
gcc/testsuite/g++.dg/warn/Wparentheses-18.C
gcc/testsuite/g++.dg/warn/Wparentheses-19.C
gcc/testsuite/g++.dg/warn/Wparentheses-20.C
gcc/testsuite/g++.dg/warn/Wparentheses-23.C
gcc/testsuite/g++.dg/warn/Wstrict-aliasing-3.C
gcc/testsuite/g++.dg/warn/noeffect2.C
gcc/testsuite/g++.dg/warn/noeffect4.C
gcc/testsuite/g++.dg/warn/pr8570.C
gcc/testsuite/g++.old-deja/g++.brendan/init2.C
gcc/testsuite/g++.old-deja/g++.eh/spec6.C
gcc/testsuite/g++.old-deja/g++.pt/crash10.C
gcc/testsuite/g++.old-deja/g++.pt/crash36.C
gcc/testsuite/g++.old-deja/g++.pt/derived3.C
gcc/testsuite/g++.old-deja/g++.pt/error2.C
gcc/testsuite/g++.old-deja/g++.pt/explicit70.C
gcc/testsuite/g++.old-deja/g++.pt/infinite1.C
gcc/testsuite/g++.old-deja/g++.pt/memtemp89.C
gcc/testsuite/g++.old-deja/g++.pt/overload7.C
gcc/testsuite/g++.old-deja/g++.pt/vaarg3.C
gcc/testsuite/lib/prune.exp
libstdc++-v3/ChangeLog
libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc
libstdc++-v3/testsuite/20_util/duration/requirements/typedefs_neg1.cc
libstdc++-v3/testsuite/20_util/duration/requirements/typedefs_neg2.cc
libstdc++-v3/testsuite/20_util/duration/requirements/typedefs_neg3.cc
libstdc++-v3/testsuite/20_util/forward/1_neg.cc
libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs_neg.cc
libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc
libstdc++-v3/testsuite/20_util/ratio/cons/cons_overflow_neg.cc
libstdc++-v3/testsuite/20_util/ratio/operations/ops_overflow_neg.cc
libstdc++-v3/testsuite/20_util/shared_ptr/assign/shared_ptr_neg.cc
libstdc++-v3/testsuite/ext/ext_pointer/1_neg.cc
libstdc++-v3/testsuite/ext/pb_ds/example/hash_resize_neg.cc
libstdc++-v3/testsuite/ext/type_traits/add_unsigned_floating_neg.cc
libstdc++-v3/testsuite/ext/type_traits/add_unsigned_integer_neg.cc
libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_floating_neg.cc
libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_integer_neg.cc
libstdc++-v3/testsuite/lib/prune.exp
libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/shared_ptr_neg.cc

index 0e71e376d5e037c0f4133ce7b2f7645205dfb8a4..97913c477ff11fa846d85d495d56e8a6ec4078f4 100644 (file)
@@ -1,5 +1,7 @@
 2011-06-07  Jason Merrill  <jason@redhat.com>
 
+       * c-common.c (max_tinst_depth): Lower default to 900.
+
        * c-format.c (gcc_cxxdiag_char_table): Add 'S' format.
 
 2011-06-07  Richard Guenther  <rguenther@suse.de>
index e5c070f940b7dbea1839621dd6ffb5438ae534fa..37a5f1e45d447c854bc3156b00b46a376c2154b9 100644 (file)
@@ -255,10 +255,13 @@ int flag_use_repository;
 enum cxx_dialect cxx_dialect = cxx98;
 
 /* Maximum template instantiation depth.  This limit exists to limit the
-   time it takes to notice excessively recursive template instantiations;
-   the default value of 1024 is likely to be in the next C++ standard.  */
+   time it takes to notice excessively recursive template instantiations.
 
-int max_tinst_depth = 1024;
+   The default is lower than the 1024 recommended by the C++0x standard
+   because G++ runs out of stack before 1024 with highly recursive template
+   argument deduction substitution (g++.dg/cpp0x/enum11.C).  */
+
+int max_tinst_depth = 900;
 
 /* The elements of `ridpointers' are identifier nodes for the reserved
    type names and storage classes.  It is indexed by a RID_... value.  */
index 641bf73bd05eccab91b509344e530fcc05de7401..5b47f21d2622313f4f473149032fcdcf4ae3cf32 100644 (file)
@@ -1,5 +1,14 @@
 2011-06-07  Jason Merrill  <jason@redhat.com>
 
+       PR c++/48969
+       PR c++/44175
+       * error.c (subst_to_string): New.
+       (cp_printer): Use it for 'S'.
+       (print_instantiation_partial_context_line): Handle subst context.
+       * pt.c (push_tinst_level): Handle subst context.
+       (deduction_tsubst_fntype): Don't track specific substitutions.
+       Use push_tinst_level.
+
        * pt.c (deduction_tsubst_fntype): Use push_deduction_access_scope.
        (fn_type_unification): Don't call push_deduction_access_scope here.
 
index a40630ac9c3ee33aa8259356ed832c7c6b91fe47..d9652dc10efa05259b9c9c16c204bafc0d62660c 100644 (file)
@@ -2665,6 +2665,32 @@ args_to_string (tree p, int verbose)
   return pp_formatted_text (cxx_pp);
 }
 
+/* Pretty-print a deduction substitution (from deduction_tsubst_fntype).  P
+   is a TREE_LIST with purpose the TEMPLATE_DECL, value the template
+   arguments.  */
+
+static const char *
+subst_to_string (tree p)
+{
+  tree decl = TREE_PURPOSE (p);
+  tree targs = TREE_VALUE (p);
+  tree tparms = DECL_TEMPLATE_PARMS (decl);
+  int flags = TFF_DECL_SPECIFIERS|TFF_TEMPLATE_HEADER;
+
+  if (p == NULL_TREE)
+    return "";
+
+  reinit_cxx_pp ();
+  dump_template_decl (TREE_PURPOSE (p), flags);
+  pp_cxx_whitespace (cxx_pp);
+  pp_cxx_left_bracket (cxx_pp);
+  pp_cxx_ws_string (cxx_pp, M_("with"));
+  pp_cxx_whitespace (cxx_pp);
+  dump_template_bindings (tparms, targs, NULL);
+  pp_cxx_right_bracket (cxx_pp);
+  return pp_formatted_text (cxx_pp);
+}
+
 static const char *
 cv_to_string (tree p, int v)
 {
@@ -2888,38 +2914,34 @@ print_instantiation_partial_context_line (diagnostic_context *context,
   expanded_location xloc;
   xloc = expand_location (loc);
 
-  if (t != NULL) 
+  if (context->show_column)
+    pp_verbatim (context->printer, _("%s:%d:%d:   "),
+                xloc.file, xloc.line, xloc.column);
+  else
+    pp_verbatim (context->printer, _("%s:%d:   "),
+                xloc.file, xloc.line);
+
+  if (t != NULL)
     {
-      const char *str;
-      str = decl_as_string_translate (t->decl,
-                                     TFF_DECL_SPECIFIERS | TFF_RETURN_TYPE);
-      if (context->show_column)
+      if (TREE_CODE (t->decl) == TREE_LIST)
        pp_verbatim (context->printer,
                     recursive_p
-                    ? _("%s:%d:%d:   recursively instantiated from %qs\n")
-                    : _("%s:%d:%d:   instantiated from %qs\n"),
-                    xloc.file, xloc.line, xloc.column, str);
+                    ? _("recursively required by substitution of %qS\n")
+                    : _("required by substitution of %qS\n"),
+                    t->decl);
       else
        pp_verbatim (context->printer,
                     recursive_p
-                    ? _("%s:%d:   recursively instantiated from %qs\n")
-                    : _("%s:%d:   recursively instantiated from %qs\n"),
-                    xloc.file, xloc.line, str);
+                    ? _("recursively required from %q#D\n")
+                    : _("required from %q#D\n"),
+                    t->decl);
     }
   else
     {
-      if (context->show_column)
-       pp_verbatim (context->printer, 
-                    recursive_p
-                    ? _("%s:%d:%d:   recursively instantiated from here")
-                    : _("%s:%d:%d:   instantiated from here"),
-                    xloc.file, xloc.line, xloc.column);
-      else
-       pp_verbatim (context->printer,
-                    recursive_p
-                    ? _("%s:%d:   recursively instantiated from here")
-                    : _("%s:%d:   instantiated from here"),
-                    xloc.file, xloc.line);
+      pp_verbatim (context->printer,
+                  recursive_p
+                  ? _("recursively required from here")
+                  : _("required from here"));
     }
 }
 
@@ -3093,6 +3115,7 @@ cp_printer (pretty_printer *pp, text_info *text, const char *spec,
     case 'O': result = op_to_string (next_tcode);              break;
     case 'P': result = parm_to_string (next_int);              break;
     case 'Q': result = assop_to_string (next_tcode);           break;
+    case 'S': result = subst_to_string (next_tree);            break;
     case 'T': result = type_to_string (next_tree, verbose);    break;
     case 'V': result = cv_to_string (next_tree, verbose);      break;
 
index ce43d8a669ed812a6aed97185658b70138a07a22..f93fa7fd6cc1afa9eeec8f7cad3a33c1405bda73 100644 (file)
@@ -7490,16 +7490,15 @@ push_tinst_level (tree d)
 
   if (tinst_depth >= max_tinst_depth)
     {
-      /* If the instantiation in question still has unbound template parms,
-        we don't really care if we can't instantiate it, so just return.
-        This happens with base instantiation for implicit `typename'.  */
-      if (uses_template_parms (d))
-       return 0;
-
       last_template_error_tick = tinst_level_tick;
-      error ("template instantiation depth exceeds maximum of %d (use "
-            "-ftemplate-depth= to increase the maximum) instantiating %qD",
-            max_tinst_depth, d);
+      if (TREE_CODE (d) == TREE_LIST)
+       error ("template instantiation depth exceeds maximum of %d (use "
+              "-ftemplate-depth= to increase the maximum) substituting %qS",
+              max_tinst_depth, d);
+      else
+       error ("template instantiation depth exceeds maximum of %d (use "
+              "-ftemplate-depth= to increase the maximum) instantiating %qD",
+              max_tinst_depth, d);
 
       print_instantiation_context ();
 
@@ -13594,11 +13593,6 @@ check_instantiated_args (tree tmpl, tree args, tsubst_flags_t complain)
   return result;
 }
 
-DEF_VEC_O (spec_entry);
-DEF_VEC_ALLOC_O (spec_entry,gc);
-static GTY(()) VEC(spec_entry,gc) *current_deduction_vec;
-static GTY((param_is (spec_entry))) htab_t current_deduction_htab;
-
 /* In C++0x, it's possible to have a function template whose type depends
    on itself recursively.  This is most obvious with decltype, but can also
    occur with enumeration scope (c++/48969).  So we need to catch infinite
@@ -13609,133 +13603,48 @@ static GTY((param_is (spec_entry))) htab_t current_deduction_htab;
    f<N-1> across all integers, and returns error_mark_node for all the
    substitutions back up to the initial one.
 
-   This is, of course, not reentrant.
-
-   Use of a VEC here is O(n^2) in the depth of function template argument
-   deduction substitution, but using a hash table creates a lot of constant
-   overhead for the typical case of very low depth.  So to make the typical
-   case fast we start out with a VEC and switch to a hash table only if
-   depth gets to be significant; in one metaprogramming testcase, even at
-   depth 80 the overhead of the VEC relative to a hash table was only about
-   0.5% of compile time.  */
+   This is, of course, not reentrant.  */
 
 static tree
 deduction_tsubst_fntype (tree fn, tree targs)
 {
   static bool excessive_deduction_depth;
-
-  unsigned i;
-  spec_entry **slot;
-  spec_entry *p;
-  spec_entry elt;
-  tree r;
-  hashval_t hash;
+  static int deduction_depth;
+  location_t save_loc = input_location;
 
   tree fntype = TREE_TYPE (fn);
+  tree tinst;
+  tree r;
 
-  /* We don't need to worry about this in C++98.  */
-  if (cxx_dialect < cxx0x)
-    {
-      push_deduction_access_scope (fn);
-      r = tsubst (fntype, targs, tf_none, NULL_TREE);
-      pop_deduction_access_scope (fn);
-      return r;
-    }
-
-  /* If we're seeing a lot of recursion, switch over to a hash table.  The
-     constant 40 is fairly arbitrary.  */
-  if (!current_deduction_htab
-      && VEC_length (spec_entry, current_deduction_vec) > 40)
-    {
-      current_deduction_htab = htab_create_ggc (40*2, hash_specialization,
-                                               eq_specializations, ggc_free);
-      FOR_EACH_VEC_ELT (spec_entry, current_deduction_vec, i, p)
-       {
-         slot = (spec_entry **) htab_find_slot (current_deduction_htab,
-                                                p, INSERT);
-         *slot = ggc_alloc_spec_entry ();
-         **slot = *p;
-       }
-      VEC_free (spec_entry, gc, current_deduction_vec);
-    }
-
-  /* Now check everything in the vector, if any.  */
-  FOR_EACH_VEC_ELT (spec_entry, current_deduction_vec, i, p)
-    if (p->tmpl == fn && comp_template_args (p->args, targs))
-      {
-       p->spec = error_mark_node;
-       return error_mark_node;
-      }
-
-  elt.tmpl = fn;
-  elt.args = targs;
-  elt.spec = NULL_TREE;
-
-  /* If we've created a hash table, look there.  */
-  if (current_deduction_htab)
-    {
-      if (htab_elements (current_deduction_htab)
-         > (unsigned) max_tinst_depth)
-       {
-         /* Trying to recurse across all integers or some such.  */
-         excessive_deduction_depth = true;
-         return error_mark_node;
-       }
+  if (excessive_deduction_depth)
+    return error_mark_node;
 
-      hash = hash_specialization (&elt);
-      slot = (spec_entry **)
-       htab_find_slot_with_hash (current_deduction_htab, &elt, hash, INSERT);
-      if (*slot)
-       {
-         /* We already have an entry for this.  */
-         (*slot)->spec = error_mark_node;
-         return error_mark_node;
-       }
-      else
-       {
-         /* Create a new entry.  */
-         *slot = ggc_alloc_spec_entry ();
-         **slot = elt;
-       }
-    }
-  else
+  tinst = build_tree_list (fn, targs);
+  if (!push_tinst_level (tinst))
     {
-      /* No hash table, so add it to the VEC.  */
-      hash = 0;
-      VEC_safe_push (spec_entry, gc, current_deduction_vec, &elt);
+      excessive_deduction_depth = true;
+      ggc_free (tinst);
+      return error_mark_node;
     }
 
+  input_location = DECL_SOURCE_LOCATION (fn);
+  ++deduction_depth;
   push_deduction_access_scope (fn);
   r = tsubst (fntype, targs, tf_none, NULL_TREE);
   pop_deduction_access_scope (fn);
+  --deduction_depth;
+  input_location = save_loc;
 
-  /* After doing the substitution, make sure we didn't hit it again.  Note
-     that we might have switched to a hash table during tsubst.  */
-  if (current_deduction_htab)
-    {
-      if (hash == 0)
-       hash = hash_specialization (&elt);
-      slot = (spec_entry **)
-       htab_find_slot_with_hash (current_deduction_htab, &elt, hash,
-                                 NO_INSERT);
-      if ((*slot)->spec == error_mark_node)
-       r = error_mark_node;
-      htab_clear_slot (current_deduction_htab, (void**)slot);
-    }
-  else
-    {
-      if (VEC_last (spec_entry, current_deduction_vec)->spec
-         == error_mark_node)
-       r = error_mark_node;
-      VEC_pop (spec_entry, current_deduction_vec);
-    }
   if (excessive_deduction_depth)
     {
       r = error_mark_node;
-      if (htab_elements (current_deduction_htab) == 0)
+      if (deduction_depth == 0)
        /* Reset once we're all the way out.  */
        excessive_deduction_depth = false;
     }
+
+  pop_tinst_level ();
+  ggc_free (tinst);
   return r;
 }
 
@@ -19562,11 +19471,6 @@ print_template_statistics (void)
           "%f collisions\n", (long) htab_size (type_specializations),
           (long) htab_elements (type_specializations),
           htab_collisions (type_specializations));
-  if (current_deduction_htab)
-    fprintf (stderr, "current_deduction_htab: size %ld, %ld elements, "
-            "%f collisions\n", (long) htab_size (current_deduction_htab),
-            (long) htab_elements (current_deduction_htab),
-            htab_collisions (current_deduction_htab));
 }
 
 #include "gt-cp-pt.h"
index 5f4c66a1dc161ce7c59327de466fa0542a082c04..ab0cf0a9b7e8773d60d58dd88c9e012c90d2d43c 100644 (file)
@@ -2069,7 +2069,8 @@ Set the maximum instantiation depth for template classes to @var{n}.
 A limit on the template instantiation depth is needed to detect
 endless recursions during template class instantiation.  ANSI/ISO C++
 conforming programs must not rely on a maximum depth greater than 17
-(changed to 1024 in C++0x).
+(changed to 1024 in C++0x).  The default value is 900, as the compiler
+can run out of stack space before hitting 1024 in some situations.
 
 @item -fno-threadsafe-statics
 @opindex fno-threadsafe-statics
index 3b5ebcf1ceac3c01c920b7db235fff190a7595a2..b9f3aa3313b793da974425b8b5c8575cb0998040 100644 (file)
@@ -1,3 +1,131 @@
+2011-06-07  Jason Merrill  <jason@redhat.com>
+
+       * lib/prune.exp: Look for "required" rather than "instantiated".
+       * g++.dg/abi/mangle11.C: Likewise.
+       * g++.dg/abi/mangle12.C: Likewise.
+       * g++.dg/abi/mangle17.C: Likewise.
+       * g++.dg/abi/mangle20-2.C: Likewise.
+       * g++.dg/abi/pragma-pack1.C: Likewise.
+       * g++.dg/cpp0x/decltype26.C: Likewise.
+       * g++.dg/cpp0x/decltype28.C: Likewise.
+       * g++.dg/cpp0x/decltype29.C: Likewise.
+       * g++.dg/cpp0x/enum11.C: Likewise.
+       * g++.dg/cpp0x/forw_enum8.C: Likewise.
+       * g++.dg/cpp0x/lambda/lambda-errloc2.C: Likewise.
+       * g++.dg/cpp0x/pr47416.C: Likewise.
+       * g++.dg/ext/case-range2.C: Likewise.
+       * g++.dg/ext/case-range3.C: Likewise.
+       * g++.dg/gomp/for-19.C: Likewise.
+       * g++.dg/gomp/pr37533.C: Likewise.
+       * g++.dg/gomp/pr38639.C: Likewise.
+       * g++.dg/gomp/tpl-parallel-2.C: Likewise.
+       * g++.dg/inherit/base3.C: Likewise.
+       * g++.dg/inherit/using6.C: Likewise.
+       * g++.dg/init/placement4.C: Likewise.
+       * g++.dg/init/reference3.C: Likewise.
+       * g++.dg/lookup/scoped6.C: Likewise.
+       * g++.dg/lookup/using7.C: Likewise.
+       * g++.dg/other/abstract1.C: Likewise.
+       * g++.dg/other/error10.C: Likewise.
+       * g++.dg/other/error5.C: Likewise.
+       * g++.dg/other/field1.C: Likewise.
+       * g++.dg/other/offsetof5.C: Likewise.
+       * g++.dg/parse/bitfield2.C: Likewise.
+       * g++.dg/parse/constant4.C: Likewise.
+       * g++.dg/parse/crash20.C: Likewise.
+       * g++.dg/parse/invalid-op1.C: Likewise.
+       * g++.dg/parse/non-dependent2.C: Likewise.
+       * g++.dg/parse/template18.C: Likewise.
+       * g++.dg/tc1/dr152.C: Likewise.
+       * g++.dg/tc1/dr166.C: Likewise.
+       * g++.dg/tc1/dr176.C: Likewise.
+       * g++.dg/tc1/dr213.C: Likewise.
+       * g++.dg/template/access11.C: Likewise.
+       * g++.dg/template/access2.C: Likewise.
+       * g++.dg/template/access3.C: Likewise.
+       * g++.dg/template/access7.C: Likewise.
+       * g++.dg/template/arg7.C: Likewise.
+       * g++.dg/template/cond2.C: Likewise.
+       * g++.dg/template/crash13.C: Likewise.
+       * g++.dg/template/crash40.C: Likewise.
+       * g++.dg/template/crash7.C: Likewise.
+       * g++.dg/template/crash84.C: Likewise.
+       * g++.dg/template/ctor5.C: Likewise.
+       * g++.dg/template/defarg13.C: Likewise.
+       * g++.dg/template/defarg14.C: Likewise.
+       * g++.dg/template/dtor7.C: Likewise.
+       * g++.dg/template/eh2.C: Likewise.
+       * g++.dg/template/error2.C: Likewise.
+       * g++.dg/template/error43.C: Likewise.
+       * g++.dg/template/friend32.C: Likewise.
+       * g++.dg/template/injected1.C: Likewise.
+       * g++.dg/template/instantiate1.C: Likewise.
+       * g++.dg/template/instantiate3.C: Likewise.
+       * g++.dg/template/instantiate5.C: Likewise.
+       * g++.dg/template/instantiate7.C: Likewise.
+       * g++.dg/template/local6.C: Likewise.
+       * g++.dg/template/lookup2.C: Likewise.
+       * g++.dg/template/member5.C: Likewise.
+       * g++.dg/template/memfriend15.C: Likewise.
+       * g++.dg/template/memfriend16.C: Likewise.
+       * g++.dg/template/memfriend17.C: Likewise.
+       * g++.dg/template/memfriend7.C: Likewise.
+       * g++.dg/template/meminit1.C: Likewise.
+       * g++.dg/template/nested3.C: Likewise.
+       * g++.dg/template/non-type-template-argument-1.C: Likewise.
+       * g++.dg/template/nontype12.C: Likewise.
+       * g++.dg/template/nontype13.C: Likewise.
+       * g++.dg/template/nontype6.C: Likewise.
+       * g++.dg/template/pr23510.C: Likewise.
+       * g++.dg/template/pr35240.C: Likewise.
+       * g++.dg/template/ptrmem15.C: Likewise.
+       * g++.dg/template/ptrmem6.C: Likewise.
+       * g++.dg/template/qualified-id1.C: Likewise.
+       * g++.dg/template/qualttp20.C: Likewise.
+       * g++.dg/template/qualttp3.C: Likewise.
+       * g++.dg/template/qualttp4.C: Likewise.
+       * g++.dg/template/qualttp5.C: Likewise.
+       * g++.dg/template/qualttp6.C: Likewise.
+       * g++.dg/template/qualttp7.C: Likewise.
+       * g++.dg/template/qualttp8.C: Likewise.
+       * g++.dg/template/recurse.C: Likewise.
+       * g++.dg/template/recurse2.C: Likewise.
+       * g++.dg/template/ref5.C: Likewise.
+       * g++.dg/template/scope2.C: Likewise.
+       * g++.dg/template/sfinae10.C: Likewise.
+       * g++.dg/template/sfinae3.C: Likewise.
+       * g++.dg/template/sizeof3.C: Likewise.
+       * g++.dg/template/static9.C: Likewise.
+       * g++.dg/template/template-id-2.C: Likewise.
+       * g++.dg/template/typedef13.C: Likewise.
+       * g++.dg/template/typename4.C: Likewise.
+       * g++.dg/template/using14.C: Likewise.
+       * g++.dg/template/using2.C: Likewise.
+       * g++.dg/template/warn1.C: Likewise.
+       * g++.dg/warn/Wparentheses-13.C: Likewise.
+       * g++.dg/warn/Wparentheses-15.C: Likewise.
+       * g++.dg/warn/Wparentheses-16.C: Likewise.
+       * g++.dg/warn/Wparentheses-17.C: Likewise.
+       * g++.dg/warn/Wparentheses-18.C: Likewise.
+       * g++.dg/warn/Wparentheses-19.C: Likewise.
+       * g++.dg/warn/Wparentheses-20.C: Likewise.
+       * g++.dg/warn/Wparentheses-23.C: Likewise.
+       * g++.dg/warn/Wstrict-aliasing-3.C: Likewise.
+       * g++.dg/warn/noeffect2.C: Likewise.
+       * g++.dg/warn/noeffect4.C: Likewise.
+       * g++.dg/warn/pr8570.C: Likewise.
+       * g++.old-deja/g++.brendan/init2.C: Likewise.
+       * g++.old-deja/g++.eh/spec6.C: Likewise.
+       * g++.old-deja/g++.pt/crash10.C: Likewise.
+       * g++.old-deja/g++.pt/crash36.C: Likewise.
+       * g++.old-deja/g++.pt/derived3.C: Likewise.
+       * g++.old-deja/g++.pt/error2.C: Likewise.
+       * g++.old-deja/g++.pt/explicit70.C: Likewise.
+       * g++.old-deja/g++.pt/infinite1.C: Likewise.
+       * g++.old-deja/g++.pt/memtemp89.C: Likewise.
+       * g++.old-deja/g++.pt/overload7.C: Likewise.
+       * g++.old-deja/g++.pt/vaarg3.C: Likewise.
+
 2011-06-07  Nicola Pero  <nicola.pero@meta-innovation.com>
            Iain Sandoe  <iains@gcc.gnu.org>
 
index 3152c256f1c7388ec67041b41b9849da76b69408..722d43c85a83e4e451c456bee38400aeadbafd74 100644 (file)
@@ -7,4 +7,4 @@ struct S {
   typedef int X;
 };
 
-template void f<S> (int); // { dg-message "instantiated" }
+template void f<S> (int); // { dg-message "required" }
index 3910cfc93ebf2155768b7d09972b318de1cdb9d3..92f49c22fdf308ac28450fbc2a70ebc7b506bd87 100644 (file)
@@ -8,4 +8,4 @@ struct S {
   typedef int X;
 };
 
-template void f<S> (int);  // { dg-message "instantiated" }
+template void f<S> (int);  // { dg-message "required" }
index 57f1a045c826128d29077ac744222b8baacd7df3..f98e2717d847d325be201bc424aa24acf2cd00f1 100644 (file)
@@ -5,7 +5,7 @@ enum E { e = 3 };
 template <int I> struct S {};
 
 template <int I> void f (S<I + e + int (3.7)>) {} // { dg-warning "mangle" }
-template void f<7>(S<7 + e + int (3.7)>); // { dg-message "instantiated" }
+template void f<7>(S<7 + e + int (3.7)>); // { dg-message "required" }
 
 template <int I> void g (S<I + e + int (3.7)>) {} // { dg-warning "mangle" }
-template void g<7>(S<7 + e + int (3.7)>); // { dg-message "instantiated" }
+template void g<7>(S<7 + e + int (3.7)>); // { dg-message "required" }
index b244e2e794e09d9569e1a3ac66c04f1f9083a25d..5ba6bac03a677854781ff6ad10deeebee05277ce 100644 (file)
@@ -10,7 +10,7 @@
 template <int I> void f(int (*)[2]) {} // { dg-warning "mangled name" }
 template <int I> void g(int (*)[I+2]) {}
 
-template void f<1>(int (*)[2]);  // { dg-message "instantiated" }
+template void f<1>(int (*)[2]);  // { dg-message "required" }
 //  { dg-final { scan-assembler "\n_?_Z1fILi1EEvPALi2E_i\[: \t\n\]" } }
 template void g<1>(int (*)[3]);
 //  { dg-final { scan-assembler "\n_?_Z1gILi1EEvPAplT_Li2E_i\[: \t\n\]" } }
index d90fc200cbf36765cc4b01b32b259752af77c9ca..9b76071c9d86ee46774c6f6d169fc1bb7a78a472 100644 (file)
@@ -23,7 +23,7 @@ template struct T<int>;   /* T<int> is instantiated here */
 template int f<int>();
 
 #pragma pack(4)
-template struct T<float>; /* T<float> is instantiated here */
+template struct T<float>; /* T<float> is required here */
 template int f<double>();
 
 int main()
index 9eb94116a6d06753c37be8286a1d0a32cf7d950b..a81d411558c3848dfb72b7a98b3be70c65231d18 100644 (file)
@@ -3,7 +3,7 @@
 struct A { };
 
 template <class T>
-decltype(f(T())) f(T t)
+decltype(f(T())) f(T t)                // { dg-error "depth" }
 {
   return f(t);
 }
index 0ab8932d7f87eb0af817ca9092a8ede337990057..c97fd202c1dc8be9537192936fa1eab1239f9b05 100644 (file)
@@ -9,8 +9,8 @@ void ft (F f, typename enable_if<N!=0, int>::type) {}
 
 template< class F, int N >
 decltype(ft<F, N-1> (F(), 0))
-ft (F f, typename enable_if<N==0, int>::type) {}
+ft (F f, typename enable_if<N==0, int>::type) {} // { dg-error "depth" }
 
 int main() {
-  ft<struct a*, 2> (0, 0);
+  ft<struct a*, 2> (0, 0);     // { dg-message "from here" }
 }
index 1dd5a5f9bf77a3b607dc2f1a7a3b9fbe9acc0742..2bb79d07e78aa855790163d2ad727b2a44a000e2 100644 (file)
@@ -10,7 +10,7 @@ ft() {}
 
 template<class F, int N>
 decltype (ft<F> (F()))
-ft() {}
+ft() {}                                // { dg-error "depth" }
 
 int main() {
     ft<struct a*, 0>();                // { dg-error "no match" }
index 98b6b00c6b4c0523c5ce0d675dff51045c9f7937..156c765beaf38359d26aa1f595150b067c451ed7 100644 (file)
@@ -1,10 +1,14 @@
 // PR c++/48969
-// { dg-options -std=c++0x }
+// { dg-options "-std=c++0x -ftemplate-depth=10" }
 
 template<unsigned int N> struct Pair { };
 struct Foo { enum { Mask = 1 }; } foo;
 template<typename A, typename B> class Pair<A::Mask | B::Mask>
-operator|(const A &, const B &)
+operator|(const A &, const B &)        // { dg-message "substitution" }
 { }
 
-Pair<Foo::Mask> f = foo|foo;
+Pair<Foo::Mask> f = foo|foo;   // { dg-message "no match" }
+
+// { dg-prune-output "note" }
+// { dg-prune-output "here" }
+// { dg-prune-output "instantiation depth" }
index c87aa5bf65223db725fcf6b91f76cf9c1c1ab37b..69e73119e0c5a6835bd1e07144c3e94e9d081079 100644 (file)
@@ -15,7 +15,7 @@ template<typename T> struct S2
     enum E : int;   // { dg-error "previous definition" }
     enum E : T;     // { dg-error "different underlying type" }
 };
-template struct S2<short>; // { dg-message "instantiated from here" }
+template struct S2<short>; // { dg-message "required from here" }
 
 //This error is diagnosed at compilation time
 template<typename T> struct S3
index dab53f1276ef67c71e9dfc5dcb6d9f95faec9534..f94d64ec0ea351aec3fbe7aaf477faa5371ca7b1 100644 (file)
@@ -15,5 +15,5 @@ void f()
 
 int main()
 {
-  f<A>();                      // { dg-message "instantiated" }
+  f<A>();                      // { dg-message "required" }
 }
index a11368a50f0a3572e9736a0a534755529f3934fa..55426c1f81d9473b255983aa2d4bbeae664320ea 100644 (file)
@@ -210,7 +210,7 @@ namespace boost
   private:table table_;
   public: unordered_map (size_type n = boost::unordered_detail::default_bucket_count,
                         hasher hf = hasher (), key_equal eql = key_equal (),
-                        allocator_type a = allocator_type ()):table_ (n, hf, eql, a)   // { dg-message "instantiated" }
+                        allocator_type a = allocator_type ()):table_ (n, hf, eql, a)   // { dg-message "required" }
     {
     }
   };
@@ -220,6 +220,6 @@ void
 foo (const int &a)
 {
   typedef boost::unordered_map < std::string, int >Name2Port;
-  Name2Port b;                 // { dg-message "instantiated" }
+  Name2Port b;                 // { dg-message "required" }
   std::make_pair (a, b);
 }
index de1f2a7e7630abc183ea9acc7411168463041252..985ded3362e1712063d858b0f91c3ab8c0813c4f 100644 (file)
@@ -22,6 +22,6 @@ int f (int i)
   switch (i) {
     case 1 ... 10: return i + 1;       // { dg-error "first entry" }
     case 3 ... 5 : return i + 3;       // { dg-error "duplicate" }
-    default: return f2 (i);            // { dg-message "instantiated" }
+    default: return f2 (i);            // { dg-message "required" }
   }
 }
index 5a09c12d61d7acf84834c29817fc718506f58329..0b0c1fc69a8c777540bba1c5be1e986aac082e3b 100644 (file)
@@ -18,6 +18,6 @@ int f (int i)
 {
   switch (i) {
     case 1 ... 10: return i + 1;      // { dg-warning "non-standard" }
-    default: return f2 (i);           // { dg-message "instantiated" }
+    default: return f2 (i);           // { dg-message "required" }
   }
 }
index 1929e45f884808a8a2565c67a685404eaa2b2e12..7c56719cc1615ca2816523fd41f400670a83c941 100644 (file)
@@ -34,8 +34,8 @@ f3 (void)
 int
 main (void)
 {
-  f1 <int> ();         // { dg-message "instantiated from here" }
+  f1 <int> ();         // { dg-message "required from here" }
   f2 <int> ();
   f3 <const char *> ();
-  f3 <void *> ();      // { dg-message "instantiated from here" }
+  f3 <void *> ();      // { dg-message "required from here" }
 }
index 7bf61945b2eeb56f63ed0518980ae31d7722d5e1..4cbf256200bd2317e4f42edc5cfdc4d49d01d6d2 100644 (file)
@@ -43,8 +43,8 @@ f4 ()
 void
 bar ()
 {
-  f1<0> ();                    // { dg-message "instantiated from here" }
-  f2<1> ();                    // { dg-message "instantiated from here" }
-  f3<int> ();                  // { dg-message "instantiated from here" }
-  f4<int> ();                  // { dg-message "instantiated from here" }
+  f1<0> ();                    // { dg-message "required from here" }
+  f2<1> ();                    // { dg-message "required from here" }
+  f3<int> ();                  // { dg-message "required from here" }
+  f4<int> ();                  // { dg-message "required from here" }
 }
index 1da3cecdf072fb122e4d17ddb871b04ef7b629e4..e7145ffbeb9fd5bc886ae960be0b2396d3df28d1 100644 (file)
@@ -13,5 +13,5 @@ foo ()
 void
 bar ()
 {
-  foo<0> ();                           // { dg-message "instantiated from here" }
+  foo<0> ();                           // { dg-message "required from here" }
 }
index 2dceb093287d3a862287054a36ee5bd984df63a0..93e076047e7f8bd95e29e2808f3a201788d3d543 100644 (file)
@@ -17,4 +17,4 @@ void S<T>::test()
 
 template struct S<int>;
 template struct S<long>;
-template struct S<float>;      // { dg-message "instantiated from here" }
+template struct S<float>;      // { dg-message "required from here" }
index 866b2906c4f6362eebb2b7bfae659e0c34f044d8..313d04242918f93d2fc14d8189cff58a1b0782ec 100644 (file)
@@ -5,4 +5,4 @@ template<typename T> struct A : T {};  // { dg-error "struct or class type" }
 
 struct B;
 
-A<void (B::*)()> a;  // { dg-message "instantiated" }
+A<void (B::*)()> a;  // { dg-message "required" }
index 7bdfc3405c1510a44e36da4570710a0a4c646059..1877d671ae138b0e17234d48d4f08b9ca9c03bc9 100644 (file)
@@ -12,4 +12,4 @@ template <typename T> struct TPL : A
 };
 
 TPL<int> i;
-TPL<float> j; // { dg-message "instantiated" }
+TPL<float> j; // { dg-message "required" }
index 9c61eca2b04619b785e154b128beeae9d7602263..3cfe27d63e634178cc34ac267b3eb9d6fca3f5e3 100644 (file)
@@ -27,6 +27,6 @@ void operator delete(void *p,Pool<T>& pool)
 int main ()
 {
   Pool<int> pool;
-  new (pool) A();              // { dg-message "instantiated" }
+  new (pool) A();              // { dg-message "required" }
   return 0;
 }
index 344e94e101e624654602aa8ffa475e2e45123689..8cc5afd6f4c127dc320c29f9f92364d4267dd6cf 100644 (file)
@@ -9,5 +9,5 @@ T f()
   T a = T();  // { dg-error "value-initialization of reference" }
 }
 
-int &a = f<int&>(); // { dg-message "instantiated from here" }
+int &a = f<int&>(); // { dg-message "required from here" }
 
index b83b08fe94f97a0b1ef44b56f9e8aa66680a0d8e..51393961ab28f66735663f167ca915ec70ef4c19 100644 (file)
@@ -10,7 +10,7 @@ public:
 class Bar {
   Foo<int> foo_;
 public:
-  Bar() {}  // { dg-message "instantiated" }
+  Bar() {}  // { dg-message "required" }
 };
 
 template class Foo<int>;
index 69e27da4700e6bcdd9ebcd5b0bab1af303c2c7ba..0c75a2df6bab9dcc34bd191750fa87b37da231fc 100644 (file)
@@ -9,4 +9,4 @@ template <typename T> struct B : A<T> // { dg-error "incomplete" }
                  // { dg-error "using" "using" { target *-*-* } 8 }
 };
 
-B<void> b; // { dg-message "instantiated" }
+B<void> b; // { dg-message "required" }
index 8406f8a25d708b68d73d78438ff5c938823b5cc5..53d767acd453026750d5d4807e1af647b186275b 100644 (file)
@@ -35,7 +35,7 @@ template <class T> struct K {
   T (*a)[2];   // { dg-error "abstract class type" }
 };
 
-template struct K<Abstract>;  // { dg-message "instantiated" }
+template struct K<Abstract>;  // { dg-message "required" }
 
 
 
index 26f7ca53f293c4d6cddfaa2d53cdb1ba60e314e7..5c17277abbf85db5b4fe9ad00265a2f749f828c1 100644 (file)
@@ -10,6 +10,6 @@ void foo(const A<N> &a)
 
 void bar()
 {
-    foo(A<0>()); // { dg-message "instantiated from here" "" }
+    foo(A<0>()); // { dg-message "required from here" "" }
 }
 
index c7a142fb57d4d32232d87979d850cc35c3e34db0..44c4a4747a6d27ca8213a74fa3ca10447c31bbd6 100644 (file)
@@ -10,4 +10,4 @@ template <typename T> struct S2 : S<T> {
     using S<T>::operator typename S<T>::I*; // { dg-error "operator S\\<int\\>" "" }
 };
 
-template struct S2<int>;  // { dg-message "instantiated" "" }
+template struct S2<int>;  // { dg-message "required" "" }
index 61a9df6956320b75d3d32f3b0f77b245d7d76a46..a719135e3f9d035528e6421d47ca81239a505e83 100644 (file)
@@ -22,4 +22,4 @@ template <> struct X<int> {
   X();
 };
 
-X<float> i; // { dg-message "instantiated from" "" }
+X<float> i; // { dg-message "required from" "" }
index 3c4843380553d46cff5a80cf1d95a38d3e24ac7f..b53b06ffb52e8bc713c249fb3866c7bf5ebf975c 100644 (file)
@@ -19,4 +19,4 @@ struct S
   static const int j = offsetof (S, i);        // { dg-warning "invalid access|offsetof" }
 };
 
-int k = S<int>::j;                     // { dg-message "instantiated from here" }
+int k = S<int>::j;                     // { dg-message "required from here" }
index a04d2adf8f3049c5dfdcb73ab351dbf00ad5dfcd..f84cc673e57475e66fcafe77040c47c251f0512b 100644 (file)
@@ -22,7 +22,7 @@ struct D
   T t : 3;              // { dg-error "non-integral type" }
 };
 
-D<double> d;            // { dg-message "instantiated" }
+D<double> d;            // { dg-message "required" }
 
 template <typename T>
 struct E
index a1be5dd02602bab854e24faf79b8bd37f2cacdd5..626dd9e2e0558400ade17885357c40680c99908d 100644 (file)
@@ -34,7 +34,7 @@ template <typename> struct X
 
 void Baz ()
 {
-  Foo<int> (); // { dg-message "instantiated" "" }
+  Foo<int> (); // { dg-message "required" "" }
 }
 
   
index d04869fa7afa338d6e002d9a9fcf7c4cbda1c7ef..b601408a581b5505a804056350b8a0507fb28838 100644 (file)
@@ -11,4 +11,4 @@ template<typename T> struct A
   typedef typename T::X Y; // { dg-error "not a class" "" }
 };
 
-A<int>::Y y; // { dg-message "instantiated from here" "" }
+A<int>::Y y; // { dg-message "required from here" "" }
index 0b75d079135a89e64ebce19e72ca083af14ab875..8d745c1a61d53d594b21d4c21e4b220014740969 100644 (file)
@@ -11,4 +11,4 @@ template <int I> struct A
     };
 };
 
-A<0>::B<0> a; // { dg-message "instantiated" }
+A<0>::B<0> a; // { dg-message "required" }
index 4df2da7faf4bdf02c24413d77ac03fee5fe48dbd..fee66d495a46494ad22a5f171b99e73b538f9191 100644 (file)
@@ -31,7 +31,7 @@ int main()
   Bar<int> bar;
 
   bar.baz ();
-  bar.foo (); // { dg-message "instantiated" "" }
+  bar.foo (); // { dg-message "required" "" }
   
   return 0;
 }
index 98209b2449c02897609f3adfeac8e2a74d7dfa8d..4c2d2e7fb7b4620991063e7ebd863a1fd34e0286 100644 (file)
@@ -49,4 +49,4 @@ template<int I> void f2()
   A::template B<I>::template b2<double>(0);
 }
 
-template void f2<0>(); // { dg-message "instantiated" }
+template void f2<0>(); // { dg-message "required" }
index f930d2e28ea34173ffd0141b8209d168a274b580..bf742ee9b8ae56e7be98efb26030dc2abbe69de4 100644 (file)
@@ -34,5 +34,5 @@ namespace N2 {
     // { dg-message "candidate" "candidate note" { target *-*-* } 33 }
   }
 
-  template int foo<float>();  // { dg-message "instantiated from here" }
+  template int foo<float>();  // { dg-message "required from here" }
 }
index 8c142906a568afc47bd87e58c0a69ea50172cecc..7ca275ed92d6f620f80103a2ec8aae39ce7875bf 100644 (file)
@@ -32,7 +32,7 @@ namespace N {
     template <> void f<double>(double )
     { 
       M::B::x = 0; 
-      M::f<long>(0);   // { dg-message "instantiated" }
+      M::f<long>(0);   // { dg-message "required" }
     }
 
     void g(void)
@@ -47,7 +47,7 @@ namespace N {
 
   template <> void f<int>(int )
   { 
-    N::f<long>(0);        // { dg-message "instantiated" }
+    N::f<long>(0);        // { dg-message "required" }
     M::A::x = 0; 
     M::B::x = 0;       // { dg-error "within this context" }
   }
index 2879ac4e79a3d440ff2058cd007f1718567bfc2d..7f4d83050e2d94d24bb525074e0ae60b482b7197 100644 (file)
@@ -15,7 +15,7 @@ namespace N1 {
     typename Derived::Base* p3;   // { dg-bogus "" "injected class name in derived classes" }
   };
 
-  template struct Derived<void>;  // { dg-bogus "instantiated from here" "everything should be looked up at parsing time (after DR224)" }
+  template struct Derived<void>;  // { dg-bogus "required from here" "everything should be looked up at parsing time (after DR224)" }
 }
 
 
index b616ff9e11a99b62cbac2427fbb611250b483442..15438517be0f31bfd91182cc16557198d031e93c 100644 (file)
@@ -23,5 +23,5 @@ int main()
 {
   A<B> ab;
   B b;
-  ab.h(b);   // { dg-message "instantiated" }
+  ab.h(b);   // { dg-message "required" }
 }
index c9364a823999b9b2dd77967947213c170c928f26..73e2caaf03fe0972f420b01b30d8a0eadc38e811 100644 (file)
@@ -21,4 +21,4 @@ template <typename T> struct X::Y {
   typename T::X x;             // { dg-error "this context" }
 };
 
-template struct X::Y<A>;       // { dg-message "instantiated from here" }
+template struct X::Y<A>;       // { dg-message "required from here" }
index c5e3f110395a9237d4a787cf4b4187cc8438e42b..0b4657d1a8a4335bf1440f2e07362b552ae4bb3e 100644 (file)
@@ -15,6 +15,6 @@ class B {
 
 int main()
 {
-  A<B> ab;                             // { dg-message "instantiated" }
-  ab.f();                              // { dg-message "instantiated" }
+  A<B> ab;                             // { dg-message "required" }
+  ab.f();                              // { dg-message "required" }
 }
index c7a155e8ba6d160f1498bd85f6bbca557c35063b..ab56620772ed88604b6171b26a416c10a1312bd2 100644 (file)
@@ -13,5 +13,5 @@ class B {
 
 int main()
 {
-  A<B> ab;                             // { dg-message "instantiated" }
+  A<B> ab;                             // { dg-message "required" }
 }
index 412ad00c0b7d48a42534f52d9114055a703f3021..bd38e4e0f4e8e2325e86d093ff21b099270b0e96 100644 (file)
@@ -14,5 +14,5 @@ typename A::T* f (A) {                        // { dg-error "this context" }
 }
 
 void g () {
-  f (S<int> ());                       // { dg-message "instantiated" }
+  f (S<int> ());                       // { dg-message "required" }
 }
index a9333b26a2162fd08856e026831d31e7db279407..dfd26bd2d975e7c7c3493c2c97d7bf33e9a65a02 100644 (file)
@@ -8,4 +8,4 @@ template<typename T> struct A
   B<C> b;
 };
 
-A<void> a;                     // { dg-message "instantiated" }
+A<void> a;                     // { dg-message "required" }
index cf8df8cd9a7e8a1099dc7d6d64e294a6cf7d2837..fad86bebe5105e056ef960862da6d337cc529469 100644 (file)
@@ -6,5 +6,5 @@ template<int X> class c;
 template<int X, int Y> int test(c<X ? : Y>&); // { dg-error "omitted" }
 
 void test(c<2>*c2) {
-       test<0, 2>(*c2); // { dg-message "instantiated" }       
+       test<0, 2>(*c2); // { dg-message "required" }
 }
index 0518666d1e56c3798aa094827baecd117f979ef9..917ddf09f10569a6acbe4a0d88439f8488f35bbd 100644 (file)
@@ -15,4 +15,4 @@ template <typename T> struct C
     X::Y;                      // { dg-error "not a base type" }
 };
 
-C<void> c;                     // { dg-message "instantiated" }
+C<void> c;                     // { dg-message "required" }
index 45123dd0d0576b0228206404ef796e88c41005eb..d720fe850cca6545c5d27e1838104bc790ee9833 100644 (file)
@@ -7,4 +7,4 @@ template<typename T> void foo()
   T::~T(); // { dg-error "member" }
 }
 
-template void foo<A>(); // { dg-message "instantiated" }
+template void foo<A>(); // { dg-message "required" }
index 7fda9a9ba19657d596be89e98f529fdeaaa33d2d..88d3af86009846955ca0c964b287ffd72a42a6bd 100644 (file)
@@ -10,5 +10,5 @@ template <typename> struct A  // { dg-message "A.void.::A.const A" }
     template <typename> A(typename A::X) {} // { dg-error "no type" }
 };
 
-A<void> a;     // { dg-error "instantiated|no match" }
+A<void> a;     // { dg-error "required|no match" }
 // { dg-prune-output "note" }
index f622aaa5e1055ae2a85a12d9a36d2b3858e4ed0e..c42f85ce550b39cc40aa01070c36e5dddda0314d 100644 (file)
@@ -13,7 +13,7 @@ template<typename T> struct a
 void
 foo ()
 {
-    a<int> v; // { dg-message "instantiated from here" }
+    a<int> v; // { dg-message "required from here" }
 }
 
 
index 6938b36b62ff3121456183e77ad59c377c1e31a9..047543cf85b90b57f44a506dc55c68ae5f345827 100644 (file)
@@ -5,4 +5,4 @@ template<typename T> struct A
   A() : T(0) {} // { dg-error "base" }
 };
 
-A<int*> a; // { dg-message "instantiated" }
+A<int*> a; // { dg-message "required" }
index ba2980bfaeaab12fc029cd07817cefac39318ac4..1d515343eb144b422f7b96002c75200d7ef721e3 100644 (file)
@@ -16,4 +16,4 @@ struct C
   typename T::F f;             // { dg-error "no type" }
 };
 
-C<B, B> c;                     // { dg-message "instantiated" }
+C<B, B> c;                     // { dg-message "required" }
index 1fe87e39dc714a8b00657355bf2c31420b35ba56..352ccc41508fcc0a2334ae89d7a0ca1b701b96b2 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/46129
-// The default argument for A<int>::B::operator() should not be instantiated
+// The default argument for A<int>::B::operator() should not be required
 
 template <class T>
 struct A {
index 186b561e9c3d8017be8d63e44406b12dc9d95430..a96332047fb84ba473496be0b6dbb804007f3dee 100644 (file)
@@ -18,5 +18,5 @@ foo (T t)
 void
 bar ()
 {
-  foo (B ());  // { dg-bogus "instantiated from here" "" { xfail *-*-* } }
+  foo (B ());  // { dg-bogus "required from here" "" { xfail *-*-* } }
 }
index d2c049c8a0626f3d3db327ff870e39e5977ad646..9559b4eccc11eb06958abad65e5f62712ce6e30f 100644 (file)
@@ -7,4 +7,4 @@ template<typename T> struct A
     void foo() throw(typename T::X);  // { dg-error "not a class" }
 };
 
-A<void> a;                            // { dg-message "instantiated" }
+A<void> a;                            // { dg-message "required" }
index 5bd9b870e7a5e92682157603f56a5dd6665c2d14..96f0bcae66110c82abcf8c3f54f335e49195796c 100644 (file)
@@ -3,7 +3,7 @@
 // Copyright (C) 2003 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 14 Aug 2003 <nathan@codesourcery.com>
 
-// instantiated from did not indicate the nested class
+// required from did not indicate the nested class
 
 template<class T> struct X
 {
@@ -15,16 +15,16 @@ template<class T> struct X
 template<class T >
 struct Derived
 {
-  class Nested : public X<T> // { dg-message "instantiated" "" }
+  class Nested : public X<T> // { dg-message "required" "" }
   {
   };
   
-  Nested m; // { dg-message "instantiated" "" }
+  Nested m; // { dg-message "required" "" }
   
   void Foo ();
 };
 
 void Foo (Derived<void> &x)
 {
-  x.Foo (); // { dg-message "instantiated" "" }
+  x.Foo (); // { dg-message "required" "" }
 }
index 876e0181a40c0a2b1746e46b9bd9dd6608940610..03f29d1f14ab05cab268955dc24e3dcb850d78eb 100644 (file)
@@ -6,4 +6,4 @@ template<int> void foo()
   struct A {} a;
 }
 
-template void foo<0>();                // { dg-message "instantiated" }
+template void foo<0>();                // { dg-message "required" }
index 81e6390d798eaf0d1acb41d693f24fa03a5d1111..d5b78e058073f1b0d44e6507f83a8edb2513e124 100644 (file)
@@ -17,5 +17,5 @@ template<class T> class B
 
 int f ()
 {
-  B<int> b;                    // { dg-message "instantiated" }
+  B<int> b;                    // { dg-message "required" }
 }
index 81873b498f9c1ac084dca2f17ebdb67ad9482e5b..58b86569387af15d2c7ca2913c23862ce33805cd 100644 (file)
@@ -30,4 +30,4 @@ struct D4: Base<T>, Base<T*> {
   typename D4::Base* p1;       // { dg-error "" }
   typename D4::template Base<double>* p2;
 };
-template struct D4<void>;      // { dg-message "instantiated" }
+template struct D4<void>;      // { dg-message "required" }
index 828f2e9c56489a6029c61ec0ed1285cf6d6dc7ab..dd501684e6389708defce5de0d7d57368282e002 100644 (file)
@@ -9,11 +9,11 @@ template <class T> struct X {
 };
 
 template <class T> struct Y {
-  X<T> x;                      // { dg-message "instantiated" }
+  X<T> x;                      // { dg-message "required" }
 };
 
 template <class T> struct Z {  // { dg-error "declaration" }
-  Y<Z<T> > y;                  // { dg-message "instantiated" }
+  Y<Z<T> > y;                  // { dg-message "required" }
 };
 
 struct ZZ : Z<int>
index de3d3a084c9b4b413bd99a79b34401e25a04a2d0..0e9fd706015c1e70214614c428ca14446dc1f277 100644 (file)
@@ -14,4 +14,4 @@ struct ACE_Cleanup_Adapter
   TYPE object_;                // { dg-error "incomplete type" }
 };
 
-template class ACE_Cleanup_Adapter<ACE_Null_Mutex>; // { dg-message "instantiated from here" }
+template class ACE_Cleanup_Adapter<ACE_Null_Mutex>; // { dg-message "required from here" }
index e592c65d816cbf92f0ac7438d4b948496294b1a4..2198087abf96c3e97072ededa6fe4075ec4f0bd3 100644 (file)
@@ -22,4 +22,4 @@ template <typename T> struct C
   // { dg-message "candidate" "candidate note" { target *-*-* } 21 }
 };
 
-C<B> c;                                // { dg-message "instantiated" }
+C<B> c;                                // { dg-message "required" }
index 2e54106ffdd2e923197b3edc4c7a26b0a1b588df..8ddbdb19ab8dbea63597add7f599fee8238f1032 100644 (file)
@@ -7,4 +7,4 @@ template<typename T> struct A
     template<T&> struct B;  // { dg-error "reference to void" }
 };
 
-A<void> a;                  // { dg-message "instantiated" }
+A<void> a;                  // { dg-message "required" }
index 4a87177c9a13d778021dc67cac25eb8e2bead247..777349a195329e3e77fcc142e778e6e294619330 100644 (file)
@@ -16,5 +16,5 @@ void findIntersection( PCVector2<double>& p0, PCVector2<double>& p1);
 
 void findIntersection( PCVector2<double>& p0, PCVector2<double>& p1)
 {
-    PCVector2<double> e = p1 - p0;     // { dg-message "instantiated" }
+    PCVector2<double> e = p1 - p0;     // { dg-message "required" }
 }
index 15ab352682f5182ed24f6d693753c787a62159ad..de4e1d9899e547be263dbc36b5c5011e9260fae3 100644 (file)
@@ -14,5 +14,5 @@ template <typename T> void Bar ()
 
 void Foo ()
 {
-  Bar<B> (); // { dg-message "instantiated" "" }
+  Bar<B> (); // { dg-message "required" "" }
 }
index ba6a9705bee7ea6d044ef23f2dbc052b2456ce5f..0cdd52aea89a51aef60e030623604146a7f69ed0 100644 (file)
@@ -28,6 +28,6 @@ struct S {
 template< typename _A > void S::foo() {} 
 
 template void S::foo< 0 >();    // { dg-error "no definition available" "no def" }
-                               // { dg-message "instantiated" "instantiated" { target *-*-* } 30 }
+                               // { dg-message "required" "instantiated" { target *-*-* } 30 }
 
 }
index c12ec4b5af2c04e5172d12dcd4f6e4af9eb8dbe7..a620c3b15ce19d77ef606b9b8ab3753870507ee8 100644 (file)
@@ -30,5 +30,5 @@ template<class T> void A<T>::B2::f()
 int main()
 {
   A<int>::B2 b1;
-  b1.f();      // { dg-message "instantiated" }
+  b1.f();      // { dg-message "required" }
 }
index 2827ef3f7a19b68e001707e8afd5a60ee6a91196..1276970e34490223859afe746dc04363a2f0b51f 100644 (file)
@@ -30,5 +30,5 @@ template<class T> template <class U> void A<T>::B2<U>::f()
 int main()
 {
   A<int>::B2<int> b1;
-  b1.f();      // { dg-message "instantiated" }
+  b1.f();      // { dg-message "required" }
 }
index 5e163fa477a85769ca47b886470e42028ddd0438..5f4b8e7b3791b72e4660345d7b1807f58c32c076 100644 (file)
@@ -43,4 +43,4 @@ void A<T>::B::func2(void)
     (void)F2<T*>::foo;
 }
 
-template class A<int>; // { dg-message "instantiated" }
+template class A<int>; // { dg-message "required" }
index 1583646c0dfe2bd2a82e3d431d3e1493a12039ba..26ca6d8e9f0a9e652cab9b0c98b0df0eddf28667 100644 (file)
@@ -116,18 +116,18 @@ template <> void A<char>::j<0>()
 int main()
 {
   A<int *> a1;
-  a1.f(0);                             // { dg-message "instantiated" }
-  a1.g<char>();                                // { dg-message "instantiated" }
-  a1.g<int>();                         // { dg-message "instantiated" }
-  a1.h();                              // { dg-message "instantiated" }
-  a1.i('a');                           // { dg-message "instantiated" }
-  a1.j<1>();                           // { dg-message "instantiated" }
+  a1.f(0);                             // { dg-message "required" }
+  a1.g<char>();                                // { dg-message "required" }
+  a1.g<int>();                         // { dg-message "required" }
+  a1.h();                              // { dg-message "required" }
+  a1.i('a');                           // { dg-message "required" }
+  a1.j<1>();                           // { dg-message "required" }
   A<char> a2;
   a2.f(0);
-  a2.g<char>();                                // { dg-message "instantiated" }
+  a2.g<char>();                                // { dg-message "required" }
   a2.g<int>();
   a2.h();
   a2.i('a');
-  a2.j<1>();                           // { dg-message "instantiated" }
+  a2.j<1>();                           // { dg-message "required" }
   a2.j<0>();
 }
index 6fd024a26330eb44ac3622b8914e7211da0af222..b1c4d424b8a67c90c48df1e71538124f44d8f9ef 100644 (file)
@@ -5,4 +5,4 @@ struct S
   S() : S() {} // { dg-error "base" }
 };
 
-S<int> s; // { dg-message "instantiated" }
+S<int> s; // { dg-message "required" }
index 5652e178a7034bd71ee5cd80ad75616aab98d479..4544cc903b4033618ced7b178e6ed7bc80b5a9c6 100644 (file)
@@ -24,7 +24,7 @@ class B {
 
 
 int main() {
-  B<char> objB; // { dg-message "instantiated" }
+  B<char> objB; // { dg-message "required" }
 
   return 0;
 }
index 41243649a11d22cb1ca0980f8dd1959fe28ec5c4..99b00ccb8e508ec9ef58c938da91f54a699389ae 100644 (file)
@@ -9,4 +9,4 @@ template <typename T> struct D
    C<T::X> c;                   // { dg-error "parsed as a non-type|if a type is meant" }
 };
 
-D<B> d;                         // { dg-message "instantiated from here" }
+D<B> d;                         // { dg-message "required from here" }
index a290ec337ea041e0f956aa73ac182266bd317a67..b4bb41d109b42af9f78ada63a54c5a2c761213a9 100644 (file)
@@ -9,7 +9,7 @@ template<typename T> struct A
 };
 
 A<char>   a1;
-A<double> a2;                                   // { dg-message "instantiated" }
+A<double> a2;                                   // { dg-message "required" }
 
 template<typename T> struct B
 {
@@ -27,9 +27,9 @@ template<typename T> struct C
   template<T> int foo();                        // { dg-error "double" }
 };
 
-template<typename T> int baz(T) { C<T> c; }     // { dg-message "instantiated" }
+template<typename T> int baz(T) { C<T> c; }     // { dg-message "required" }
 
 void foobar()
 {
-  baz(1.2);                                     // { dg-message "instantiated" }
+  baz(1.2);                                     // { dg-message "required" }
 }
index 6fffb8d8e5353204e4bfbd496cc307a8a805cf51..4b3e862ba8003e4d1fbeb14aa7115c9d86b430b9 100644 (file)
@@ -24,6 +24,6 @@ struct Dummy
 int main()
 {
   Dummy<int> d;
-  d.tester<true> (); // { dg-message "instantiated" }
+  d.tester<true> (); // { dg-message "required" }
 }
 
index 97b093ae5517ec475e43b2697a17f29e506d07a8..b51474f83ea488f1fc614a99273c4a75b7ded0b4 100644 (file)
@@ -16,4 +16,4 @@ void func(void)
 // { dg-message "if a type" "note" { target *-*-* } 15 }
 }
 
-template void func<float>(void);    // { dg-message "instantiated from here" }
+template void func<float>(void);    // { dg-message "required from here" }
index 1c3180f8331fdcf9b8596b7f209350959ed8b884..86310d33b290db124aec741de8d7498ae4179e06 100644 (file)
@@ -4,7 +4,7 @@ template<unsigned int nFactor>
 struct Factorial
 {
   enum { nValue = nFactor * Factorial<nFactor - 1>::nValue }; // { dg-error "depth exceeds maximum" } 
-  // { dg-message "recursively instantiated" "" { target *-*-* } 6 } 
+  // { dg-message "recursively required" "" { target *-*-* } 6 }
   // { dg-error "incomplete type" "" { target *-*-* } 6 } 
 } // { dg-error "expected ';' after" }
 
index 47455b6583b00b97247184b96dc49e7013c4e463..88e25050fdadb03d83dbc286d7de8ec6b6a9b4ed 100644 (file)
@@ -8,5 +8,5 @@ template<int N> A<sizeof(new int[N][N])> foo(); // { dg-message "unimplemented"
 
 void bar()
 {
-  foo<1>(); // { dg-message "instantiated" }
+  foo<1>(); // { dg-message "required" }
 }
index b52ff89174a6fc3c661d9203659a8b4ee2c36cc7..30556414f88dd87e1401d4b3d679b00d4e52c448 100644 (file)
@@ -6,4 +6,4 @@ template<typename T> struct A
     T A::* p;  // { dg-error "void" }
 };
 
-A<void> a;     // { dg-message "instantiated" }
+A<void> a;     // { dg-message "required" }
index a355cfe893991d87be9baa37c64fcf68f9a4971d..21475c6391186e8c85b3be841fc3742dd6256223 100644 (file)
@@ -7,4 +7,4 @@ void f (int T::* volatile *p) {
   g(p); // { dg-error "conversion" }
 }
 
-template void f(int S::* volatile *); // { dg-message "instantiated" }
+template void f(int S::* volatile *); // { dg-message "required" }
index 602be5bf154c02a677eb6293d9a3d83f07dcd8db..c46a6a4de5d228fb89eb7a2cddded3dabb813823 100644 (file)
@@ -23,5 +23,5 @@ template <typename T> void foo()
 
 void bar()
 {
-  foo<A>(); // { dg-message "instantiated" }
+  foo<A>(); // { dg-message "required" }
 }
index f42981b52b7a5fa3704138b3dde45a857858547f..8073fe382f40cbf8d318e55a5271e7783f8d2a22 100644 (file)
@@ -32,5 +32,5 @@ template <typename T> struct B2 : T
   myconst b;
 };
 
-B1<AS> b1;     // { dg-message "instantiated" "" }
+B1<AS> b1;     // { dg-message "required" "" }
 B2<AS> b2;
index 4b9ffe34ea6fb0740440dae0e98dba48e5773880..61141b399fb2e1e01ba9a5e546dfa199cde5c3d8 100644 (file)
@@ -19,5 +19,5 @@ template <class T> struct C
 
 int main()
 {
-       C<A> c; // { dg-message "instantiated" }
+       C<A> c; // { dg-message "required" }
 }
index c55ce2d3750a1a151727fb9dfe667d60255c5edb..0f45c8c832e6a43a79a0d527c1e6e9154f1cc38b 100644 (file)
@@ -20,5 +20,5 @@ template <class T> struct C
 
 int main()
 {
-       C<A> c; // { dg-message "instantiated" }
+       C<A> c; // { dg-message "required" }
 }
index 8bca7f696601f674e75e019fecf49ecb42293214..8ac1952f9abae8843c534ec24e43994d65e0da76 100644 (file)
@@ -16,11 +16,11 @@ template <template <class> class TT> void f()
 
 template <class T> struct C
 {
-       void g() { f<A<T>::template B>(); } // { dg-message "instantiated" }
+       void g() { f<A<T>::template B>(); } // { dg-message "required" }
 };
 
 int main()
 {
        C<int> c;
-       c.g(); // { dg-message "instantiated" }
+       c.g(); // { dg-message "required" }
 }
index aa1a4670033d08c9fb43c873367cc29caed18191..7bd3c24f29a08133f9b5598edfb0691ed350ad9d 100644 (file)
@@ -12,4 +12,4 @@ template <class T> struct D {
 struct E {
 };
 
-D<E> d; // { dg-message "instantiated" }
+D<E> d; // { dg-message "required" }
index f37123e778fbfe75a3d44c0569e4f281451ba655..e922f1d81fff29f88f3c67e4561e3d1b8ce03474 100644 (file)
@@ -9,4 +9,4 @@ template <class T> struct D {
        C<T::template B> c; // { dg-error "no class template" }
 };
 
-D<int> d; // { dg-message "instantiated" }
+D<int> d; // { dg-message "required" }
index 5f55e60b3165c42520796331c6dc2ec46ca01aba..c1396dbad02e932ca828110d7a68bec684fd7ffa 100644 (file)
@@ -14,4 +14,4 @@ struct E {
        template <class T> class B {}; // { dg-error "private" }
 };
 
-D<E> d; // { dg-message "instantiated" }
+D<E> d; // { dg-message "required" }
index 448c34721c21d2a7d6478228f50c94ba4da99f8c..94b56f67e99376a3f14ee57ebda22b0fc03b4176 100644 (file)
@@ -8,7 +8,7 @@ template <int I> struct F
       F<I+1> f;                        // { dg-error "incomplete type" "incomplete" }
                                // { dg-bogus "exceeds maximum.*exceeds maximum" "exceeds" { xfail *-*-* } 8 }
                                 // { dg-error "exceeds maximum" "exceeds" { xfail *-*-* } 8 }
-      return f()*I;             // { dg-message "recursively instantiated" "recurse" }
+      return f()*I;             // { dg-message "recursively" "recurse" }
     }
 };
 
@@ -20,8 +20,8 @@ template <> struct F<52>
 int main ()
 {
   F<1> f;
-  return f();          // { dg-message "instantiated from here" "excessive recursion" }
+  return f();          // { dg-message "from here" "excessive recursion" }
 }
 
 // Ignore excess messages from recursion.
-// { dg-prune-output "instantiated from 'int" }
+// { dg-prune-output "from 'int" }
index b9767dfb600dd9a019a2ff1a02e2ed76f0584035..eae411b5ead9d7948ead4c8ed5791ff505e58f63 100644 (file)
@@ -3,6 +3,6 @@
 
 template <int N> struct X {
     static const int value = X<N-1>::value; // { dg-error "instantiation|incomplete" }
-  // { dg-message "recursively instantiated" "" { target *-*-* } 5 }
+  // { dg-message "recursively required" "" { target *-*-* } 5 }
 };
 template struct X<1000>;
index efefbef9c2611e56c9c9fc37a53677141eb90907..69c2d6989c7b2181681577f3da3ea0372c0bf5ba 100644 (file)
@@ -8,4 +8,4 @@ template<typename T> struct B
   A<t> a;                      // { dg-error "reference variable" }
 };
 
-B<int&> b;                     // { dg-message "instantiated" }
+B<int&> b;                     // { dg-message "required" }
index 79b520cbeab1788a51fb6f2d8f33a6c1b2d88416..ad9bf8e9d426ee19a7a152d69e804a1aa8b0ce97 100644 (file)
@@ -3,7 +3,7 @@
 // Copyright (C) 2003 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 15 Aug 2003 <nathan@codesourcery.com>
 
-// checked instantiated bases in wrong scope.
+// checked required bases in wrong scope.
 
 class Helper {};
 
index f44c4458f35fc100e3a863714c596865a801db2c..c6cb12f30123ea884744cd6ae1881d2e20ef1ddf 100644 (file)
@@ -169,13 +169,13 @@ STATIC_ASSERT((has_postdecrement<X>::value));
 STATIC_ASSERT((!has_postdecrement<Y>::value));
 
 // Check for private members
-STATIC_ASSERT((has_unary_plus<Z>::value)); // { dg-message "instantiated from here" }
-STATIC_ASSERT((is_negatable<Z>::value)); // { dg-message "instantiated from here" }
-STATIC_ASSERT((is_dereferenceable<Z>::value)); // { dg-message "instantiated from here" }
-STATIC_ASSERT((has_bitwise_not<Z>::value)); // { dg-message "instantiated from here" }
-STATIC_ASSERT((has_truth_not<Z>::value)); // { dg-message "instantiated from here" }
-STATIC_ASSERT((has_preincrement<Z>::value)); // { dg-message "instantiated from here" }
-STATIC_ASSERT((has_predecrement<Z>::value)); // { dg-message "instantiated from here" }
-STATIC_ASSERT((has_postincrement<Z>::value)); // { dg-message "instantiated from here" }
-STATIC_ASSERT((has_postdecrement<Z>::value)); // { dg-message "instantiated from here" }
+STATIC_ASSERT((has_unary_plus<Z>::value)); // { dg-message "required from here" }
+STATIC_ASSERT((is_negatable<Z>::value)); // { dg-message "required from here" }
+STATIC_ASSERT((is_dereferenceable<Z>::value)); // { dg-message "required from here" }
+STATIC_ASSERT((has_bitwise_not<Z>::value)); // { dg-message "required from here" }
+STATIC_ASSERT((has_truth_not<Z>::value)); // { dg-message "required from here" }
+STATIC_ASSERT((has_preincrement<Z>::value)); // { dg-message "required from here" }
+STATIC_ASSERT((has_predecrement<Z>::value)); // { dg-message "required from here" }
+STATIC_ASSERT((has_postincrement<Z>::value)); // { dg-message "required from here" }
+STATIC_ASSERT((has_postdecrement<Z>::value)); // { dg-message "required from here" }
 
index 349463d95fe3680f893bbbdd704148cfc69f4588..b08d201127217f06303b7d096063a5b4415796d6 100644 (file)
@@ -14,4 +14,4 @@ template<typename> struct B
   template<typename T> B(T, Y);
 };
 
-B<int> b(0,0); // { dg-message "instantiated from here" }
+B<int> b(0,0); // { dg-message "required from here" }
index a98bbc30adc883811fbface14e77232aaa6696df..7c9d0d2c9da22423db13d00850212d7de7f57a4c 100644 (file)
@@ -1,5 +1,5 @@
 // The call to f is not potentially evaluated (3.2), so f<int> is not used,
-// so it should not be instantiated.
+// so it should not be required.
 
 template <class T>
 T f (T)
index ab70101a19c42a20c374d92393af8050443620e7..058d4dec5a771cb4e9f60d182c37588a32f7161c 100644 (file)
@@ -5,4 +5,4 @@ template<typename T> struct A
   static const T i = 0; // { dg-error "declared void" "void" }
 };
 
-A<void> a; // { dg-message "instantiated" }
+A<void> a; // { dg-message "required" }
index 6d37350e93b4f91be38a173b1c2760a1b45e04e3..333e33d5aa5240bf3d4f222eb51bdb3d794aa196 100644 (file)
@@ -18,5 +18,5 @@ template<> struct A<void>
 void bar()
 {
     A<void> a;
-    a.foo<int>();              // { dg-message "instantiated" }
+    a.foo<int>();              // { dg-message "required" }
 }
index a22e1cb11ca058d2e7ec0386a03f8c4389c32733..5d40e63f1e2e69ae596bf7600075cea2069b04b1 100644 (file)
@@ -12,5 +12,5 @@ template <class T> class B : public A
   mytype mem; // { dg-error "within this context"  }
 };
 
-B<int> b; // { dg-message "instantiated from here" }
+B<int> b; // { dg-message "required from here" }
 
index 18cdd1aba01594235296fb7fc746da0a0d1ce718..56b505142e275f96f9aff3257e62ce626301e6f2 100644 (file)
@@ -1,3 +1,3 @@
 struct B { template <typename U> struct C; };
 template <typename T> struct A { typedef typename T::C V; }; // { dg-error "not a type" }
-void f () { A<B>::V p; } // { dg-message "instantiated" }
+void f () { A<B>::V p; } // { dg-message "required" }
index ebb4e090a37ca09b9aff2d186d852a306a1c08d2..276c40b876cdcffe8db6164f00332b659434aa08 100644 (file)
@@ -17,5 +17,5 @@ template <class T> struct C : public B1<T>, public B2
 int main()
 {
   C<int> c;
-  c.f();                       // { dg-message "instantiated" }
+  c.f();                       // { dg-message "required" }
 }
index 5d21f575b3ce1fc1bdcabc5299533fd0f7d0dc67..6dd9ef46ce73bb6b8fe2d450e1cf319a7b6b93d3 100644 (file)
@@ -25,6 +25,6 @@ struct Bar : public Foo<T>, Baz {
 
 void foo (Bar<int> &bar)
 {
-  bar.foo(); // { dg-message "instantiated" }
+  bar.foo(); // { dg-message "required" }
 }
 
index 2b804f7ca8fc1c9e8250f8347b808aeef6a08312..5067d76e8e38be4584414d0aee462f59f5f885f0 100644 (file)
@@ -17,7 +17,7 @@ template <class T>  void Foo(T i)
  
 void Bar ()
 { 
-  Foo (1);  // { dg-message "instantiated" }
+  Foo (1);  // { dg-message "required" }
 }
 
 struct M {};
index ebe8f426a3b7124d10082334bcfc18bc10e6a8b1..22a139f23a4edc3df3fa043a94e4268ca0007de4 100644 (file)
@@ -66,4 +66,4 @@ bar (T)
   foo (27);
 }
 
-template void bar<int> (int); // { dg-message "instantiated" }
+template void bar<int> (int); // { dg-message "required" }
index db73d430aeafa882159085fa0f2e3e400d609a6e..c088b76dfc45f372a3ee73472067b239b0827983 100644 (file)
@@ -65,4 +65,4 @@ bar (T a, T b, T c)
   foo (1 != (2 != 3));
 }
 
-template void bar<int> (int, int, int); // { dg-message "instantiated" }
+template void bar<int> (int, int, int); // { dg-message "required" }
index 6381552370dddd330da501532ca2d97cbf6d4945..0f80cb9c42bacc796d856a1f5d41dadd35e87de8 100644 (file)
@@ -83,4 +83,4 @@ bar (T a, T b, T c)
   foo (6 >> (5 - 4));
 }
 
-template void bar<int> (int, int, int); // { dg-message "instantiated" }
+template void bar<int> (int, int, int); // { dg-message "required" }
index 1af1e2e0380c98bc27e5c1b1cc1d0fb4614373d1..b7c28e0424b6516396604383439fe5e54557d15e 100644 (file)
@@ -29,4 +29,4 @@ bar (T a, T b, T c)
   foo (1 || (2 && 3));
 }
 
-template void bar<int> (int, int, int); // { dg-message "instantiated" }
+template void bar<int> (int, int, int); // { dg-message "required" }
index d562315f3c79bbc49afa803f09ca7d36ff69d942..83efaff41898501548dd71e03e997477ffb701e6 100644 (file)
@@ -119,4 +119,4 @@ bar (T a, T b, T c)
   foo (1 | (2 <= 3));
 }
 
-template void bar<int> (int, int, int); // { dg-message "instantiated" }
+template void bar<int> (int, int, int); // { dg-message "required" }
index e3dfc5d05c3a784fc80ee20869e4645d7611f2c9..f0e2b805c9ec276520e45170a1603abe40cdfab7 100644 (file)
@@ -119,4 +119,4 @@ bar (T a, T b, T c)
   foo (1 ^ (2 < 3));
 }
 
-template void bar<int> (int, int, int); // { dg-message "instantiated" }
+template void bar<int> (int, int, int); // { dg-message "required" }
index a1ba89dfcd57e5c99bfb43db7570e6ba61ac8e10..746a3103772cb8888067b705827b6bcd5ed6f7f7 100644 (file)
@@ -101,4 +101,4 @@ bar (T a, T b, T c)
   foo (1 & (2 != 3));
 }
 
-template void bar<int> (int, int, int); // { dg-message "instantiated" }
+template void bar<int> (int, int, int); // { dg-message "required" }
index cadc287fe967209c7a15d950959a57f4daa06d71..f1749c2b8da2d667359504d304fec5e811b1490a 100644 (file)
@@ -114,8 +114,8 @@ bar4 (T)
   return (a = a);
 }
 
-template void bar<int> (int); // { dg-message "instantiated" }
-template bool bar1<int> (int); // { dg-message "instantiated" }
+template void bar<int> (int); // { dg-message "required" }
+template bool bar1<int> (int); // { dg-message "required" }
 template bool bar2<int> (int);
-template bool bar3<int> (int); // { dg-message "instantiated" }
+template bool bar3<int> (int); // { dg-message "required" }
 template bool bar4<int> (int);
index 94c2f47020f676cdead2388c65a5549b2bc091db..408de0ef4f19862a36b547d22e044e23307a7ee6 100644 (file)
@@ -9,6 +9,6 @@ T *foo(void)
   return (T *)&x; /* { dg-warning "strict-aliasing" } */
 }
 
-template int *foo<int>(void); /* { dg-message "instantiated from here" } */
-template char *foo<char>(void); /* { dg-bogus "instantiated from here" } */
+template int *foo<int>(void); /* { dg-message "required from here" } */
+template char *foo<char>(void); /* { dg-bogus "required from here" } */
 
index 451e0382a860545ee99a3527fb4e38c6822e8b58..8b012c8ca79918c50410351d2675360ac8157e80 100644 (file)
@@ -12,9 +12,9 @@ extern "C" void FormatDisk();
   struct C {
     C(){ FormatDisk(), 0; }  // { dg-warning "right operand of comma" "" }
   };
-  template struct C<int>; // { dg-message "instantiated" }
+  template struct C<int>; // { dg-message "required" }
   template <class T>
   void f() { FormatDisk(), 0; } // { dg-warning "right operand of comma" "" }
-  template void f<int> (); // { dg-message "instantiated" }
+  template void f<int> (); // { dg-message "required" }
 void g() { FormatDisk(), 0; } // { dg-warning "right operand of comma" "" }
 
index 966716bbc48c36f52f11494bbbaa3e63e1bd60cb..612db48eec6bddbab8973e5be9a4df694d17d501 100644 (file)
@@ -85,4 +85,4 @@ template<int I> void Foo (X &x)
   __alignof__ (x++);           // { dg-warning "no effect" "" }
 }
 
-template void Foo<4> (X&);     // { dg-message "instantiated" }
+template void Foo<4> (X&);     // { dg-message "required" }
index 608f4d6b5bf5f0fdbae55e5821f1152dadc135a9..4c34c6c336c7ea770d83060657f624fd6a553e59 100644 (file)
@@ -10,4 +10,4 @@ private:
   template <typename U> friend class X; // { dg-error "redeclared with 1 template parameter" }
 };
 
-X<int, int> i;         // { dg-message "instantiated" }
+X<int, int> i;         // { dg-message "required" }
index 8f4c2d4d20b4e158f95d61552159334c46a1770d..0bf0abab262e6a2944bd8d217f633daa51f4bb3c 100644 (file)
@@ -1,5 +1,5 @@
 // { dg-do assemble  }
 // GROUPS passed initialization
-// this should give an error in require_instantiated_type about not
+// this should give an error in require_required_type about not
 // being allowed to have an initializer list in an argument list.
 int f(int a = {1});// { dg-error "" } .*
index 015bbefdfb540634db9b56b2a0b99086e9d9616e..7780c4a9dafddca6cb02ba5763da09480f6c6eee 100644 (file)
@@ -25,7 +25,7 @@ template<class T> void fnx(T *) throw(T){}  // { dg-error "" } invalid use of vo
 void fx()
 {
   fnx((int *)0);
-  fnx((void *)0);              // { dg-message "instantiated from here" }
+  fnx((void *)0);              // { dg-message "required from here" }
 }
 
 // [except.spec] 2, exception specifiers must be the same set of types (but
index 86f386150d9bf432f04fe5d54122c9e158c6210b..2f785b4b9e63a63a28cfa3f09359e841e1d47111 100644 (file)
@@ -9,5 +9,5 @@ public:
 };
 
 int main() {
-  GCD< 1, 0 >::val; // { dg-message "instantiated" }
+  GCD< 1, 0 >::val; // { dg-message "required" }
 }
index fa9401bee03af1fcf53ab383c32b8007e9f9036c..22687c7862af69841fcc37b6d4ed49e8b4428d51 100644 (file)
@@ -13,7 +13,7 @@ struct iterator {
 
 
 template <class Iterator>
-struct reverse_iterator : public // { dg-message "instantiated" } no type iterator_category
+struct reverse_iterator : public // { dg-message "required" } no type iterator_category
 iterator<typename iterator_traits<Iterator>::iterator_category> {
   protected:
   Iterator current;
index b0d1d3bb2b8051a02d3c0546e03bb30a9c44244f..41e03b2cf0758eb2e46befb38cf20ebad2b506dd 100644 (file)
@@ -8,9 +8,9 @@ class X {
        class Y : public T      // { dg-error "base type .* fails to be" }
        {
        };
-       Y y;                    // { dg-message "instantiated" }
+       Y y;                    // { dg-message "required" }
 };
 int main() {
-       X<int> x;               // { dg-message "instantiated" }
+       X<int> x;               // { dg-message "required" }
 }
 
index 6cb67ddec6bb64a2fca939fa50fe54a905ee4b83..2e65718b67957f8f304c26cfc2bc95750944a933 100644 (file)
@@ -9,7 +9,7 @@ public:
 
 void f ()
 {
-  Test<void> c; // { dg-message "instantiated" }
+  Test<void> c; // { dg-message "required" }
 }
 
 
index 5724f6d7d02f6db305e86e29d81cc4cc86831df1..dc9c6c945d650a20b48f888d28700115cece8f06 100644 (file)
@@ -41,4 +41,4 @@ template <class T>
 void g(T);
 
 template void g(int); // { dg-error "no definition available" "no def" }
-// { dg-message "instantiated" "inst" { target *-*-* } 43 }
+// { dg-message "required" "inst" { target *-*-* } 43 }
index 919445be593c25787aae859b95ea9532f7795916..1e2a9f0fbddab9dc0e22070b1c47e0a26341db8c 100644 (file)
@@ -19,3 +19,5 @@ int main()
 {
   f<0>();
 }
+
+// { dg-prune-output "note" }
index d4d560eedd4ad8cbd26e22d7798767b1822dc19b..1a1b5ea5f9f0c50ab1232014d396187a252079ab 100644 (file)
@@ -12,4 +12,4 @@ template<template<class> class XX>
 class Y {
        XX<int> x_;
 };
-Y<Q::X> y;                     // { dg-error "" } instantiated from here
+Y<Q::X> y;                     // { dg-error "" } required from here
index 6f5dff0a2ffd1392e47407d513c2d6c4574dbdee..c41beb0f0c04b1370b0fe425c7df86f7d5a8f604 100644 (file)
@@ -17,5 +17,5 @@ template<class T> void foo(moo_t<T>) {
 
 int main() {
   moo_t<int> x;
-  foo(x); // { dg-bogus "" "" { xfail *-*-* } }  - instantiated from here - 
+  foo(x); // { dg-bogus "" "" { xfail *-*-* } }  - required from here -
 }
index 07fb18d77d898d37566b275c141a923970719d26..e88011942831bba60aeae37c0c37ded4654a7b9f 100644 (file)
@@ -22,6 +22,6 @@ int main (void)
 {
 A dummy;
 PrintArgs (dummy, dummy); // { dg-error "cannot pass" } cannot pass non-POD
-// { dg-message "instantiated" "inst" { target *-*-* } 24 }
+// { dg-message "required" "inst" { target *-*-* } 24 }
 return 0;
 }
index 29d69b97341520b500aeb022ae7619c1a59e8712..58b59a49dd63d33872ed07b3e6923c5ce96790d1 100644 (file)
@@ -22,7 +22,7 @@ proc prune_gcc_output { text } {
 
     regsub -all "(^|\n)(\[^\n\]*: )?In ((static member |lambda )?function|member|method|(copy )?constructor|destructor|instantiation|program|subroutine|block-data)\[^\n\]*" $text "" text
     regsub -all "(^|\n)\[^\n\]*(: )?At (top level|global scope):\[^\n\]*" $text "" text
-    regsub -all "(^|\n)\[^\n\]*:   (recursively )?instantiated from \[^\n\]*" $text "" text
+    regsub -all "(^|\n)\[^\n\]*:   (recursively )?required \[^\n\]*" $text "" text
     regsub -all "(^|\n)\[^\n\]*:   . skipping \[0-9\]* instantiation contexts \[^\n\]*" $text "" text
     regsub -all "(^|\n)    inlined from \[^\n\]*" $text "" text
     regsub -all "(^|\n)collect2: error: ld returned \[^\n\]*" $text "" text
index e00f06a2159fb37a156a73f040ac22c00354ec01..b259e9a97827abaedc4289d053f017041f3865a9 100644 (file)
@@ -1,3 +1,24 @@
+2011-06-07  Jason Merrill  <jason@redhat.com>
+
+       * testsuite/lib/prune.exp: s/required/instantiated/.
+       * testsuite/20_util/declval/requirements/1_neg.cc: Likewise.
+       * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
+       * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
+       * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
+       * testsuite/20_util/forward/1_neg.cc: Likewise.
+       * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Likewise.
+       * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Likewise.
+       * testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Likewise.
+       * testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Likewise.
+       * testsuite/20_util/shared_ptr/assign/shared_ptr_neg.cc: Likewise.
+       * testsuite/ext/ext_pointer/1_neg.cc: Likewise.
+       * testsuite/ext/pb_ds/example/hash_resize_neg.cc: Likewise.
+       * testsuite/ext/type_traits/add_unsigned_floating_neg.cc: Likewise.
+       * testsuite/ext/type_traits/add_unsigned_integer_neg.cc: Likewise.
+       * testsuite/ext/type_traits/remove_unsigned_floating_neg.cc: Likewise.
+       * testsuite/ext/type_traits/remove_unsigned_integer_neg.cc: Likewise.
+       * testsuite/tr1/2_general_utilities/shared_ptr/assign/shared_ptr_neg.cc: Likewise.
+
 2011-06-07  Paolo Carlini  <paolo.carlini@oracle.com>
 
        * include/bits/move.h (struct __move_if_noexcept_cond): Add.
index 8fcdab40a583c7c4628218db17c11418928f8d83..a5f4b286bc0a2d6c0511254448d5d375f5af4f99 100644 (file)
@@ -25,5 +25,5 @@
 
 void test01()
 {
-  std::declval<int>();         // { dg-error "instantiated from here" }
+  std::declval<int>();         // { dg-error "required from here" }
 }
index 5965f03b1b390a6ad57685c05de8dac1276da9f7..1e9c69ebf89fc6c868fb12a84b8212fcc11404ac 100644 (file)
@@ -32,4 +32,4 @@ void test01()
 }
 
 // { dg-error "rep cannot be a duration" "" { target *-*-* } 226 }
-// { dg-error "instantiated from here" "" { target *-*-* } 31 }
+// { dg-error "required from here" "" { target *-*-* } 31 }
index d84ab9e8cf50f985a2d2f24a34986b50e479a2b1..c30d94c2e0a5f765c3410fbf99a4b69826c0c995 100644 (file)
@@ -33,5 +33,5 @@ void test01()
 }
 
 // { dg-error "must be a specialization of ratio" "" { target *-*-* } 227 }
-// { dg-error "instantiated from here" "" { target *-*-* } 32 }
+// { dg-error "required from here" "" { target *-*-* } 32 }
 // { dg-excess-errors "In instantiation of" }
index 7c73bf996ddd458ef1defc1657bc26bf86222891..940af7f805cfebc26aa5a15f8b6bffde7015ff5a 100644 (file)
@@ -34,4 +34,4 @@ void test01()
 }
 
 // { dg-error "period must be positive" "" { target *-*-* } 229 }
-// { dg-error "instantiated from here" "" { target *-*-* } 33 }
+// { dg-error "required from here" "" { target *-*-* } 33 }
index 6c007bee2367f82b21c6d80aaafafbc48265159a..978ea52c7f86b831367cae42080c3dc28f75d31f 100644 (file)
@@ -38,7 +38,7 @@ struct A
 
 void g()
 {
-  std::shared_ptr<A> sp1 = factory<A>(2, 1.414); // { dg-error "instantiated from here" }
+  std::shared_ptr<A> sp1 = factory<A>(2, 1.414); // { dg-error "required from here" }
 }
 
 // { dg-excess-errors "" }
index 77328d8a4c2bd28d405ff7982edf62ac14adc747..f37d4fbf88a182cf10d9ae5ba3932d7f1a74364a 100644 (file)
@@ -43,10 +43,10 @@ void test01()
 }
 
 // { dg-error "does not name a type" "" { target *-*-* } 33 }
-// { dg-error "instantiated from here" "" { target *-*-* } 35 }
-// { dg-error "instantiated from here" "" { target *-*-* } 37 }
-// { dg-error "instantiated from here" "" { target *-*-* } 40 }
-// { dg-error "instantiated from here" "" { target *-*-* } 42 }
+// { dg-error "required from here" "" { target *-*-* } 35 }
+// { dg-error "required from here" "" { target *-*-* } 37 }
+// { dg-error "required from here" "" { target *-*-* } 40 }
+// { dg-error "required from here" "" { target *-*-* } 42 }
 
 // { dg-error "invalid use of incomplete type" "" { target *-*-* } 1511 }
 // { dg-error "declaration of" "" { target *-*-* } 1475 }
index 572953eef27bc7710c5a037fc8e59b88f5ee5182..497f170d97aa641fc779ebb05973f22847e0f40b 100644 (file)
@@ -43,10 +43,10 @@ void test01()
 }
 
 // { dg-error "does not name a type" "" { target *-*-* } 33 }
-// { dg-error "instantiated from here" "" { target *-*-* } 35 }
-// { dg-error "instantiated from here" "" { target *-*-* } 37 }
-// { dg-error "instantiated from here" "" { target *-*-* } 40 }
-// { dg-error "instantiated from here" "" { target *-*-* } 42 }
+// { dg-error "required from here" "" { target *-*-* } 35 }
+// { dg-error "required from here" "" { target *-*-* } 37 }
+// { dg-error "required from here" "" { target *-*-* } 40 }
+// { dg-error "required from here" "" { target *-*-* } 42 }
 
 // { dg-error "invalid use of incomplete type" "" { target *-*-* } 1435 }
 // { dg-error "declaration of" "" { target *-*-* } 1399 }
index e6a71c3fe5d326025fb7b0c158cffc3b7063ae93..83f5ce11f03ef34d56b25e8a24509e3d10bd18ee 100644 (file)
@@ -46,9 +46,9 @@ test04()
   std::ratio<1,0> r1 __attribute__((unused));
 }
 
-// { dg-error "instantiated from here" "" { target *-*-* } 34 }
-// { dg-error "instantiated from here" "" { target *-*-* } 40 }
-// { dg-error "instantiated from here" "" { target *-*-* } 46 }
+// { dg-error "required from here" "" { target *-*-* } 34 }
+// { dg-error "required from here" "" { target *-*-* } 40 }
+// { dg-error "required from here" "" { target *-*-* } 46 }
 // { dg-error "denominator cannot be zero" "" { target *-*-* } 268 }
 // { dg-error "out of range" "" { target *-*-* } 269 }
 // { dg-error "overflow in constant expression" "" { target *-*-* } 109 }
index f1da21978ec470223c7f3e1f0378cb2655e0ecdd..07b1a567b01bc3411c432393c9b9242b05b87f5e 100644 (file)
@@ -36,9 +36,9 @@ test02()
   std::ratio_multiply<std::ratio<INTMAX_MAX>, std::ratio<INTMAX_MAX>>::type r2;
 }
 
-// { dg-error "instantiated from here" "" { target *-*-* } 29 }
-// { dg-error "instantiated from here" "" { target *-*-* } 35 }
-// { dg-error "instantiated from here" "" { target *-*-* } 36 }
+// { dg-error "required from here" "" { target *-*-* } 29 }
+// { dg-error "required from here" "" { target *-*-* } 35 }
+// { dg-error "required from here" "" { target *-*-* } 36 }
 // { dg-error "overflow in addition" "" { target *-*-* } 432 }
 // { dg-error "overflow in multiplication" "" { target *-*-* } 104 }
 // { dg-error "overflow in multiplication" "" { target *-*-* } 100 }
index e0d09dee900171836fc1c6ed5b896c1e08413b23..a56148a3f9a7f64fe76837e10dc284214ad4960e 100644 (file)
@@ -49,4 +49,4 @@ main()
 }
 // { dg-error "In member function" "" { target *-*-* } 0 }
 // { dg-error "cannot convert" "" { target *-*-* } 0 }
-// { dg-error "instantiated from" "" { target *-*-* } 0 }
+// { dg-error "required from" "" { target *-*-* } 0 }
index 0ceb9a6597ac9c873c98d0702607d848b8c54108..c87e35de0fdd0f646585f867bc79be05491dc1d4 100644 (file)
@@ -54,16 +54,16 @@ void test01(void) {
   A_pointer aptr( &a );
 
   // Can't implicitly cast from A* to B*
-  B_pointer bptr1(aptr); // { dg-error "instantiated from here" 31 }
-  B_pointer bptr2(&a); // { dg-error "instantiated from here" 32 }
+  B_pointer bptr1(aptr); // { dg-error "required from here" 31 }
+  B_pointer bptr2(&a); // { dg-error "required from here" 32 }
 
   // but explicit cast/conversion is OK.
   B_pointer bptr3(__static_pointer_cast<B_pointer>(aptr)); // ok
   B_pointer bptr4(__static_pointer_cast<B_pointer>(&a)); // ok
 
   // Can't implicitly cast from A* to B*
-  bptr1 = aptr; // { dg-error "instantiated from here" 39 }
-  bptr1 = &a; // { dg-error "instantiated from here" 40 }
+  bptr1 = aptr; // { dg-error "required from here" 39 }
+  bptr1 = &a; // { dg-error "required from here" 40 }
 
   // but explicit cast/conversion is OK.
   bptr1 = __static_pointer_cast<B_pointer>(aptr); // ok
@@ -71,21 +71,21 @@ void test01(void) {
 
   // Similarly, can't shed constness via implicit cast
   const_A_pointer captr(&a);
-  A_pointer aptr2(captr); // { dg-error "instantiated from here" 48 }
+  A_pointer aptr2(captr); // { dg-error "required from here" 48 }
 
   // but explicit cast/conversion is OK.
   A_pointer aptr3(__const_pointer_cast<A_pointer>(captr)); // ok
 
   // Similarly, can't shed constness via implicit cast
-  aptr2 = captr; // { dg-error "instantiated from here" 54 }
+  aptr2 = captr; // { dg-error "required from here" 54 }
 
   // but explicit cast/conversion is OK.
   aptr3 = __const_pointer_cast<A_pointer>(captr); // ok
 
   // Combine explicit const cast with implicit downcast.
   const_B_pointer cbptr(&b);
-  A_pointer aptr4(cbptr); // { dg-error "instantiated from here" 61 }
-  aptr4 = cbptr; // { dg-error "instantiated from here" 62 }
+  A_pointer aptr4(cbptr); // { dg-error "required from here" 61 }
+  aptr4 = cbptr; // { dg-error "required from here" 62 }
 
   A_pointer aptr5(__const_pointer_cast<B_pointer>(cbptr)); // ok
   aptr5 = __const_pointer_cast<B_pointer>(cbptr);  // ok
index 9577dfbc033a69b7596cae4434fda452d428cc42..c5b2bd2e98fe6c07cd29a233846c3875cb16d9f3 100644 (file)
@@ -57,7 +57,7 @@ int main()
   // The following line won't compile. The resize policy needs to be
   // configured to allow external resize (by default, this is not
   // available).
-  h.resize(20); // { dg-error "instantiated from" }
+  h.resize(20); // { dg-error "required from" }
 }
 
 // { dg-error "invalid" "" { target *-*-* } 187 } 
index 98202bdb86750bb2f3f1980e3961e21dd5d8328e..fbd5f1d704af6cdc3333cd4e0667c1f3e6596d1e 100644 (file)
@@ -30,9 +30,9 @@ template<typename T>
 
 int main()
 {
-  check_add_unsigned<float>();  // { dg-error "instantiated from" }
+  check_add_unsigned<float>();  // { dg-error "required from" }
   return 0;
 }
 
-// { dg-error "instantiated from" "" { target *-*-* } 28 } 
+// { dg-error "required from" "" { target *-*-* } 28 }
 // { dg-error "no type" "" { target *-*-* } 69 } 
index f08c879e5a8846eb99ba4f93bc91aea02adcb78d..b976de022b4f0b8fa91826b6da165421700edc69 100644 (file)
@@ -30,8 +30,8 @@ template<typename T>
 
 int main()
 {
-  check_add_unsigned<bool>();  // { dg-error "instantiated from" }
-  check_add_unsigned<wchar_t>();  // { dg-error "instantiated from" }
+  check_add_unsigned<bool>();  // { dg-error "required from" }
+  check_add_unsigned<wchar_t>();  // { dg-error "required from" }
   return 0;
 }
 
index 486baad93b736ee374d8b54ec316482437f99f2b..2e04046965a8db91fe6070d21a07b7ab563d318d 100644 (file)
@@ -30,9 +30,9 @@ template<typename T>
 
 int main()
 {
-  check_remove_unsigned<float>();  // { dg-error "instantiated from" }
+  check_remove_unsigned<float>();  // { dg-error "required from" }
   return 0;
 }
 
-// { dg-error "instantiated from" "" { target *-*-* } 28 }
+// { dg-error "required from" "" { target *-*-* } 28 }
 // { dg-error "no type" "" { target *-*-* } 112 }
index 1ad1d93bfb9b448ab0f070e1e7b1b2bc0829739f..bd5c4237e027e6dedbd32a1384bd4c9b525867c7 100644 (file)
@@ -30,8 +30,8 @@ template<typename T>
 
 int main()
 {
-  check_remove_unsigned<bool>();  // { dg-error "instantiated from" }
-  check_remove_unsigned<wchar_t>();  // { dg-error "instantiated from" }
+  check_remove_unsigned<bool>();  // { dg-error "required from" }
+  check_remove_unsigned<wchar_t>();  // { dg-error "required from" }
   return 0;
 }
 
index cdbcd310a3d212aad58a30d73351a7f22208bbeb..e7d6a5acb8b55d024e866b478da025684c6d2742 100644 (file)
@@ -39,7 +39,7 @@ proc libstdc++-dg-prune { system text } {
     # definitions, etc as these confuse dejagnu
     regsub -all "(^|\n)(\[^\n\]*: )?In ((static member |lambda )?function|member|method|(copy )?constructor|destructor|instantiation|program|subroutine|block-data)\[^\n\]*" $text "" text
     regsub -all "(^|\n)\[^\n\]*(: )?At (top level|global scope):\[^\n\]*" $text "" text
-    regsub -all "(^|\n)\[^\n\]*:   (recursively )?instantiated from \[^\n\]*" $text "" text
+    regsub -all "(^|\n)\[^\n\]*:   (recursively )?required \[^\n\]*" $text "" text
     regsub -all "(^|\n)\[^\n\]*:   . skipping \[0-9\]* instantiation contexts \[^\n\]*" $text "" text
     regsub -all "(^|\n)    inlined from \[^\n\]*" $text "" text
     # Why doesn't GCC need these to strip header context?
index 490cfc4cce69a906dc54b4d9f284228a922770c6..8114531e2d71f397a86862dd4c659cdabe277025 100644 (file)
@@ -48,4 +48,4 @@ main()
 }
 // { dg-error "In member function" "" { target *-*-* } 0 }
 // { dg-error "cannot convert" "" { target *-*-* } 0 }
-// { dg-error "instantiated from" "" { target *-*-* } 0 }
+// { dg-error "required from" "" { target *-*-* } 0 }