re PR ada/21952 (Annoying "attribute directive ignored" warnings)

2005-11-07  James A. Morrison  <phython@gcc.gnu.org>

        PR treelang/21952
        * treetree.c (LANG_HOOKS_ATTRIBUTE_TABLE): Set to
        treelang_attribute_table.
        (handle_attribute): New function.
        (treelang_attribute_table): New attribute table.

From-SVN: r106582
This commit is contained in:
James A. Morrison 2005-11-07 06:54:52 +00:00
parent 96c993a890
commit 7d4a2fb0d4
2 changed files with 41 additions and 2 deletions

View File

@ -1,3 +1,11 @@
2005-11-07 James A. Morrison <phython@gcc.gnu.org>
PR treelang/21952
* treetree.c (LANG_HOOKS_ATTRIBUTE_TABLE): Set to
treelang_attribute_table.
(handle_attribute): New function.
(treelang_attribute_table): New attribute table.
2005-09-23 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
* parse.y : Changed pointer declaration from "type* var" to "type *var"

View File

@ -139,8 +139,10 @@ static tree* getstmtlist (void);
/* Langhooks. */
static tree builtin_function (const char *name, tree type, int function_code,
enum built_in_class class, const char *library_name,
tree attrs);
enum built_in_class class,
const char *library_name,
tree attrs);
extern const struct attribute_spec treelang_attribute_table[];
static tree getdecls (void);
static int global_bindings_p (void);
static void insert_block (tree);
@ -166,6 +168,8 @@ static void treelang_expand_function (tree fndecl);
#define LANG_HOOKS_TYPE_FOR_SIZE tree_lang_type_for_size
#undef LANG_HOOKS_PARSE_FILE
#define LANG_HOOKS_PARSE_FILE treelang_parse_file
#undef LANG_HOOKS_ATTRIBUTE_TABLE
#define LANG_HOOKS_ATTRIBUTE_TABLE treelang_attribute_table
#undef LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION
#define LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION treelang_expand_function
@ -1194,6 +1198,33 @@ treelang_init_decl_processing (void)
pedantic_lvalues = pedantic;
}
static tree
handle_attribute (tree *node, tree name, tree ARG_UNUSED (args),
int ARG_UNUSED (flags), bool *no_add_attrs)
{
if (TREE_CODE (*node) == FUNCTION_DECL)
{
if (strcmp (IDENTIFIER_POINTER (name), "const") == 0)
TREE_READONLY (*node) = 1;
if (strcmp (IDENTIFIER_POINTER (name), "nothrow") == 0)
TREE_NOTHROW (*node) = 1;
}
else
{
warning (OPT_Wattributes, "%qD attribute ignored", name);
*no_add_attrs = true;
}
return NULL_TREE;
}
const struct attribute_spec treelang_attribute_table[] =
{
{ "const", 0, 0, true, false, false, handle_attribute },
{ "nothrow", 0, 0, true, false, false, handle_attribute },
{ NULL, 0, 0, false, false, false, NULL },
};
/* Return a definition for a builtin function named NAME and whose data type
is TYPE. TYPE should be a function type with argument types.
FUNCTION_CODE tells later passes how to compile calls to this function.