diff options
| author | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-11-25 09:29:18 +0000 |
|---|---|---|
| committer | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-11-25 09:29:18 +0000 |
| commit | 9ece9d6eee56aeead6a0a1cc9b26e5f9bc2a377d (patch) | |
| tree | 8c4df0c4ef890e3613150784ffba4521d08c85b7 | |
| parent | 2b7d858c79410630f5a154874f394c5f95a7e2ad (diff) | |
| download | ppe42-gcc-9ece9d6eee56aeead6a0a1cc9b26e5f9bc2a377d.tar.gz ppe42-gcc-9ece9d6eee56aeead6a0a1cc9b26e5f9bc2a377d.zip | |
/cp
2013-11-25 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/59080
* pt.c (unify): Don't call unify_array_domain with a NULL_TREE
third argument.
PR c++/59096
* pt.c (apply_late_template_attributes): Check that TREE_VALUE
isn't NULL_TREE in the attribute_takes_identifier_p case.
/testsuite
2013-11-25 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/59080
* g++.dg/cpp0x/initlist75.C: New.
PR c++/59096
* g++.dg/cpp0x/gen-attrs-57.C: New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@205344 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/cp/ChangeLog | 10 | ||||
| -rw-r--r-- | gcc/cp/pt.c | 8 | ||||
| -rw-r--r-- | gcc/testsuite/ChangeLog | 8 | ||||
| -rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/gen-attrs-57.C | 9 | ||||
| -rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/initlist75.C | 6 |
5 files changed, 38 insertions, 3 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 92b520b45ed..74b75e9891c 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,13 @@ +2013-11-25 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/59080 + * pt.c (unify): Don't call unify_array_domain with a NULL_TREE + third argument. + + PR c++/59096 + * pt.c (apply_late_template_attributes): Check that TREE_VALUE + isn't NULL_TREE in the attribute_takes_identifier_p case. + 2013-11-25 Adam Butcher <adam@jessamine.co.uk> PR c++/59112 diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index b05294bda1b..b58c7556e2e 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -8624,7 +8624,8 @@ apply_late_template_attributes (tree *decl_p, tree attributes, int attr_flags, pass it through tsubst. Attributes like mode, format, cleanup and several target specific attributes expect it unmodified. */ - else if (attribute_takes_identifier_p (get_attribute_name (t))) + else if (attribute_takes_identifier_p (get_attribute_name (t)) + && TREE_VALUE (t)) { tree chain = tsubst_expr (TREE_CHAIN (TREE_VALUE (t)), args, complain, @@ -17210,8 +17211,9 @@ unify (tree tparms, tree targs, tree parm, tree arg, int strict, /* Also deduce from the length of the initializer list. */ tree max = size_int (CONSTRUCTOR_NELTS (arg)); tree idx = compute_array_index_type (NULL_TREE, max, tf_none); - return unify_array_domain (tparms, targs, TYPE_DOMAIN (parm), - idx, explain_p); + if (TYPE_DOMAIN (parm) != NULL_TREE) + return unify_array_domain (tparms, targs, TYPE_DOMAIN (parm), + idx, explain_p); } /* If the std::initializer_list<T> deduction worked, replace the diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ddc0fa21167..3459c5142f5 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2013-11-25 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/59080 + * g++.dg/cpp0x/initlist75.C: New. + + PR c++/59096 + * g++.dg/cpp0x/gen-attrs-57.C: New. + 2013-11-25 Adam Butcher <adam@jessamine.co.uk> PR c++/59112 diff --git a/gcc/testsuite/g++.dg/cpp0x/gen-attrs-57.C b/gcc/testsuite/g++.dg/cpp0x/gen-attrs-57.C new file mode 100644 index 00000000000..12b4f4c84e5 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/gen-attrs-57.C @@ -0,0 +1,9 @@ +// PR c++/59096 +// { dg-do compile { target c++11 } } + +template<typename T> struct A +{ + typedef T B [[mode]]; // { dg-warning "ignored" } +}; + +A<int>::B b; diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist75.C b/gcc/testsuite/g++.dg/cpp0x/initlist75.C new file mode 100644 index 00000000000..f185401c20a --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/initlist75.C @@ -0,0 +1,6 @@ +// PR c++/59080 +// { dg-require-effective-target c++11 } + +#include <initializer_list> + +auto foo[] = {}; // { dg-error "auto|unable to deduce" } |

