diff options
author | Jason Merrill <jason@redhat.com> | 2011-06-16 18:05:46 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2011-06-16 18:05:46 -0400 |
commit | 89a27d8fa26ed41071db524875a00086fac9002a (patch) | |
tree | aad1b7dccedea2b838479781129d6e761620cafc | |
parent | 361b51c08030935d78a64228551afaa65106b773 (diff) | |
download | gcc-89a27d8fa26ed41071db524875a00086fac9002a.zip gcc-89a27d8fa26ed41071db524875a00086fac9002a.tar.gz gcc-89a27d8fa26ed41071db524875a00086fac9002a.tar.bz2 |
re PR c++/49420 ([C++0x] compiler segfault using result_of)
PR c++/49420
* error.c (dump_template_argument): Don't try to omit default
template args from an argument pack.
From-SVN: r175117
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/error.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/variadic112.C | 19 |
4 files changed, 33 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 9ed5086..6523c94 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2011-06-16 Jason Merrill <jason@redhat.com> + + PR c++/49420 + * error.c (dump_template_argument): Don't try to omit default + template args from an argument pack. + 2011-06-15 H.J. Lu <hongjiu.lu@intel.com> PR c++/49412 diff --git a/gcc/cp/error.c b/gcc/cp/error.c index 22470dc..7c90ec4 100644 --- a/gcc/cp/error.c +++ b/gcc/cp/error.c @@ -147,7 +147,9 @@ static void dump_template_argument (tree arg, int flags) { if (ARGUMENT_PACK_P (arg)) - dump_template_argument_list (ARGUMENT_PACK_ARGS (arg), flags); + dump_template_argument_list (ARGUMENT_PACK_ARGS (arg), + /* No default args in argument packs. */ + flags|TFF_NO_OMIT_DEFAULT_TEMPLATE_ARGUMENTS); else if (TYPE_P (arg) || TREE_CODE (arg) == TEMPLATE_DECL) dump_type (arg, flags & ~TFF_CLASS_KEY_OR_ENUM); else diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index bea8721..6622a60 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-06-16 Jason Merrill <jason@redhat.com> + + PR c++/49420 + * g++.dg/cpp0x/variadic112.C: New. + 2011-06-16 Jeff Law <law@redhat.com> * gcc.dg/builtin-object-size-1.c: Update to handle chances from diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic112.C b/gcc/testsuite/g++.dg/cpp0x/variadic112.C new file mode 100644 index 0000000..1640657 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/variadic112.C @@ -0,0 +1,19 @@ +// PR c++/49420 +// { dg-options -std=c++0x } + +struct A { }; + +template <class T> struct B +{ + typedef typename T::type type ; // { dg-error "no type" } +}; + +template <typename Array, typename... Args> +typename B<Array>::type +get(const Array& a, Args... args); + +int main() +{ + A a; + int x = get(a, 1, 2, 3); // { dg-error "no match" } +} |