mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-23 09:40:54 +08:00
c-pragma.h (pragma_extern_prefix): Declare.
2011-11-15 Tristan Gingold <gingold@adacore.com> * c-family/c-pragma.h (pragma_extern_prefix): Declare. * c-family/c-pragma.c (pragma_extern_prefix): Make it public. * config/vms/vms-c.c (saved_extern_prefix): New variable. (vms_pragma_extern_prefix): New function. (vms_c_register_pragma): Register vms_pragma_extern_prefix. From-SVN: r181379
This commit is contained in:
parent
7c20948114
commit
e50e723eec
@ -1,3 +1,11 @@
|
||||
2011-11-15 Tristan Gingold <gingold@adacore.com>
|
||||
|
||||
* c-family/c-pragma.h (pragma_extern_prefix): Declare.
|
||||
* c-family/c-pragma.c (pragma_extern_prefix): Make it public.
|
||||
* config/vms/vms-c.c (saved_extern_prefix): New variable.
|
||||
(vms_pragma_extern_prefix): New function.
|
||||
(vms_c_register_pragma): Register vms_pragma_extern_prefix.
|
||||
|
||||
2011-11-15 Georg-Johann Lay <avr@gjlay.de>
|
||||
|
||||
PR target/49868
|
||||
|
@ -494,7 +494,8 @@ add_to_renaming_pragma_list (tree oldname, tree newname)
|
||||
p->newname = newname;
|
||||
}
|
||||
|
||||
static GTY(()) tree pragma_extern_prefix;
|
||||
/* The current prefix set by #pragma extern_prefix. */
|
||||
GTY(()) tree pragma_extern_prefix;
|
||||
|
||||
/* #pragma extern_prefix "prefix" */
|
||||
static void
|
||||
|
@ -146,4 +146,6 @@ extern enum cpp_ttype c_lex_with_flags (tree *, location_t *, unsigned char *,
|
||||
|
||||
extern void c_pp_lookup_pragma (unsigned int, const char **, const char **);
|
||||
|
||||
extern GTY(()) tree pragma_extern_prefix;
|
||||
|
||||
#endif /* GCC_C_PRAGMA_H */
|
||||
|
@ -227,6 +227,42 @@ vms_pragma_message (cpp_reader *pfile ATTRIBUTE_UNUSED)
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Handle '#pragma __extern_prefix' */
|
||||
|
||||
static GTY(()) tree saved_extern_prefix;
|
||||
|
||||
static void
|
||||
vms_pragma_extern_prefix (cpp_reader * ARG_UNUSED (dummy))
|
||||
{
|
||||
enum cpp_ttype tok;
|
||||
tree x;
|
||||
|
||||
tok = pragma_lex (&x);
|
||||
if (tok == CPP_NAME)
|
||||
{
|
||||
const char *op = IDENTIFIER_POINTER (x);
|
||||
|
||||
if (!strcmp (op, "__save"))
|
||||
saved_extern_prefix = pragma_extern_prefix;
|
||||
else if (!strcmp (op, "__restore"))
|
||||
pragma_extern_prefix = saved_extern_prefix;
|
||||
else
|
||||
warning (OPT_Wpragmas,
|
||||
"malformed '#pragma __extern_prefix', ignoring");
|
||||
return;
|
||||
}
|
||||
else if (tok != CPP_STRING)
|
||||
{
|
||||
warning (OPT_Wpragmas,
|
||||
"malformed '#pragma __extern_prefix', ignoring");
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Note that the length includes the null terminator. */
|
||||
pragma_extern_prefix = (TREE_STRING_LENGTH (x) > 1 ? x : NULL);
|
||||
}
|
||||
}
|
||||
|
||||
/* Add vms-specific pragma. */
|
||||
|
||||
void
|
||||
@ -245,4 +281,5 @@ vms_c_register_pragma (void)
|
||||
c_register_pragma (NULL, "__extern_model", vms_pragma_extern_model);
|
||||
c_register_pragma (NULL, "extern_model", vms_pragma_extern_model);
|
||||
c_register_pragma (NULL, "__message", vms_pragma_message);
|
||||
c_register_pragma (NULL, "__extern_prefix", vms_pragma_extern_prefix);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user