{
static StringTable* table;
if(!table)
if(table == NULL)
// Build the table of attributes exposed to the language.
// Common and format attributes are kept internal.
size_t n = 0;
for (const attribute_spec *p = d_attribute_table; p->name; p++)
table = new StringTable();
for (const attribute_spec *p = lang_hooks.attribute_table; p->name; p++)
n++;
if(n == 0)
for (const attribute_spec *p = targetm.attribute_table; p->name; p++)
return false;
if(n != 0)
table->_init(n);
table->insert(p->name, strlen(p->name));
}
return table->lookup(name, strlen(name)) != NULL;
static char lang_name[6] = "GNU D";
const attribute_spec d_attribute_table[] =
static const attribute_spec d_attribute_table[] =
{ "noinline", 0, 0, true, false, false,
d_handle_noinline_attribute, false },
/* In d-builtins.c */
extern const attribute_spec d_builtins_attribute_table[];
extern const attribute_spec d_attribute_table[];
extern const attribute_spec d_format_attribute_table[];
tree d_builtin_function (tree);
void d_init_builtins (void);