diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index d842d8e041420d4615284ece16ab4a63eb7254e5..279ba9e64190cd84c5ab4295e1874052440cc83e 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,5 +1,8 @@
 2009-10-15  Jason Merrill  <jason@redhat.com>
 
+	PR c++/38888
+	* error.c (dump_template_bindings): Wrap argument packs in {}.
+
 	PR c++/38798
 	* parser.c (CP_PARSER_FLAGS_NO_TYPE_DEFINITIONS): New.
 	(cp_parser_type_specifier): Don't try to parse a class-specifier
diff --git a/gcc/cp/error.c b/gcc/cp/error.c
index b50704a3ae4663f1555d79fd2ab94cdb912b245d..ce5660f4a85a8555ec6a44c0dcc096ec4e94a4a7 100644
--- a/gcc/cp/error.c
+++ b/gcc/cp/error.c
@@ -311,7 +311,13 @@ dump_template_bindings (tree parms, tree args, VEC(tree,gc)* typenames)
 	  pp_equal (cxx_pp);
 	  pp_cxx_whitespace (cxx_pp);
 	  if (arg)
-	    dump_template_argument (arg, TFF_PLAIN_IDENTIFIER);
+	    {
+	      if (ARGUMENT_PACK_P (arg))
+		pp_cxx_left_brace (cxx_pp);
+	      dump_template_argument (arg, TFF_PLAIN_IDENTIFIER);
+	      if (ARGUMENT_PACK_P (arg))
+		pp_cxx_right_brace (cxx_pp);
+	    }
 	  else
 	    pp_string (cxx_pp, M_("<missing>"));