gcc/ChangeLog: * attribs.cc (make_attribute): New function overload. * attribs.h (make_attribute): New function overload. --- gcc/attribs.cc | 14 +++++++++++++- gcc/attribs.h | 1 + 2 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/gcc/attribs.cc b/gcc/attribs.cc index f6667839c01..b00d9529a8d 100644 --- a/gcc/attribs.cc +++ b/gcc/attribs.cc @@ -1090,7 +1090,19 @@ make_attribute (const char *name, const char *arg_name, tree chain) return attr; } - +/* Makes a function attribute of the form NAME (ARG_NAME) and chains + it to CHAIN. */ + +tree +make_attribute (string_slice name, string_slice arg_name, tree chain) +{ + tree attr_name = get_identifier_with_length (name.begin (), name.size ()); + tree attr_arg_name = build_string (arg_name.size (), arg_name.begin ()); + tree attr_args = tree_cons (NULL_TREE, attr_arg_name, NULL_TREE); + tree attr = tree_cons (attr_name, attr_args, chain); + return attr; +} + /* Common functions used for target clone support. */ /* Comparator function to be used in qsort routine to sort attribute diff --git a/gcc/attribs.h b/gcc/attribs.h index 4b946390f76..e7d592c5b41 100644 --- a/gcc/attribs.h +++ b/gcc/attribs.h @@ -46,6 +46,7 @@ extern tree get_attribute_name (const_tree); extern tree get_attribute_namespace (const_tree); extern void apply_tm_attr (tree, tree); extern tree make_attribute (const char *, const char *, tree); +extern tree make_attribute (string_slice, string_slice, tree); extern bool attribute_ignored_p (tree); extern bool attribute_ignored_p (const attribute_spec *const); extern bool any_nonignored_attribute_p (tree);