aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/mangle.c
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2018-11-05 02:47:05 -0500
committerJason Merrill <jason@gcc.gnu.org>2018-11-05 02:47:05 -0500
commitb008f16b7a279da845070dce786ea3afd5925364 (patch)
treefecb35ba45ea46dcb0a2b02194e8b1b54ed0e467 /gcc/cp/mangle.c
parent4be5c72cf3ea3ee98a97ac2e53d21122ad224b10 (diff)
downloadgcc-b008f16b7a279da845070dce786ea3afd5925364.zip
gcc-b008f16b7a279da845070dce786ea3afd5925364.tar.gz
gcc-b008f16b7a279da845070dce786ea3afd5925364.tar.bz2
Implement UDL changes from P0732R2.
Implementing the UDL changes was pretty straightforward; I simplified cp_parser_userdef_string_literal using the releasing_vec type from mangle.c. While looking at this, I realized that the string UDL template taking a character pack that we implemented for C++14 didn't actually make it into C++14, so I've added a pedwarn for it and no longer suggest it in the diagnostic about an invalid UDL template. * cp-tree.h (struct releasing_vec): Move from mangle.c. Add get_ref method. * parser.c (cp_parser_userdef_string_literal): Use it. Handle passing the string to a single template parameter of class type. (cp_parser_template_declaration_after_parameters): Allow it. Pedwarn about the character pack template that was proposed but not accepted for C++14, and don't suggest it. From-SVN: r265790
Diffstat (limited to 'gcc/cp/mangle.c')
-rw-r--r--gcc/cp/mangle.c24
1 files changed, 0 insertions, 24 deletions
diff --git a/gcc/cp/mangle.c b/gcc/cp/mangle.c
index 1b32301..b9d8ee2 100644
--- a/gcc/cp/mangle.c
+++ b/gcc/cp/mangle.c
@@ -1545,30 +1545,6 @@ write_abi_tags (tree tags)
release_tree_vector (vec);
}
-/* Simplified unique_ptr clone to release a tree vec on exit. */
-
-struct releasing_vec
-{
- typedef vec<tree, va_gc> vec_t;
-
- releasing_vec (vec_t *v): v(v) { }
- releasing_vec (): v(make_tree_vector ()) { }
-
- /* Copy constructor is deliberately declared but not defined,
- copies must always be elided. */
- releasing_vec (const releasing_vec &);
-
- vec_t &operator* () const { return *v; }
- vec_t *operator-> () const { return v; }
- vec_t *get () const { return v; }
- operator vec_t *() const { return v; }
- tree& operator[] (unsigned i) const { return (*v)[i]; }
-
- ~releasing_vec() { release_tree_vector (v); }
-private:
- vec_t *v;
-};
-
/* True iff the TREE_LISTS T1 and T2 of ABI tags are equivalent. */
static bool