Commit 9f416fac by Michael Hayes Committed by Michael Hayes

c4x.h (REGISTER_TARGET_PRAGMAS): Call c4x_init_pragma.

	* config/c4x/c4x.h (REGISTER_TARGET_PRAGMAS): Call c4x_init_pragma.

	* config/c4x/c4x-protos.h (c4x_init_pragma): New prototype.

	* config/c4x/c4x.c (c4x_init_pragma): New function.
	(c_lex_func): New variable.
	(c4x_parse_pragma): Use c_lex_func.

Co-Authored-By: Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>

From-SVN: r38317
parent 94eebed9
2000-12-17 Michael Hayes <m.hayes@elec.canterbury.ac.nz> 2000-12-17 Michael Hayes <m.hayes@elec.canterbury.ac.nz>
Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl> Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
* config/c4x/c4x.h (REGISTER_TARGET_PRAGMAS): Call c4x_init_pragma.
* config/c4x/c4x-protos.h (c4x_init_pragma): New prototype.
* config/c4x/c4x.c (c4x_init_pragma): New function.
(c_lex_func): New variable.
(c4x_parse_pragma): Use c_lex_func.
2000-12-17 Michael Hayes <m.hayes@elec.canterbury.ac.nz>
Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
* config/c4x/c4x.h (MD_INIT_BUILTINS): Add void_list_node argument * config/c4x/c4x.h (MD_INIT_BUILTINS): Add void_list_node argument
to c4x_init_builtins. to c4x_init_builtins.
......
...@@ -308,6 +308,7 @@ extern void c4x_pr_FUNC_IS_PURE PARAMS ((cpp_reader *)); ...@@ -308,6 +308,7 @@ extern void c4x_pr_FUNC_IS_PURE PARAMS ((cpp_reader *));
extern void c4x_pr_FUNC_NEVER_RETURNS PARAMS ((cpp_reader *)); extern void c4x_pr_FUNC_NEVER_RETURNS PARAMS ((cpp_reader *));
extern void c4x_pr_INTERRUPT PARAMS ((cpp_reader *)); extern void c4x_pr_INTERRUPT PARAMS ((cpp_reader *));
extern void c4x_pr_ignored PARAMS ((cpp_reader *)); extern void c4x_pr_ignored PARAMS ((cpp_reader *));
extern void c4x_init_pragma PARAMS ((int (*) (tree *)));
#endif #endif
#endif #endif
...@@ -4391,6 +4391,16 @@ c4x_operand_subword (op, i, validate_address, mode) ...@@ -4391,6 +4391,16 @@ c4x_operand_subword (op, i, validate_address, mode)
-1 for a malformed pragma. */ -1 for a malformed pragma. */
#define BAD(msgid, arg) do { warning (msgid, arg); return -1; } while (0) #define BAD(msgid, arg) do { warning (msgid, arg); return -1; } while (0)
static int (*c_lex_func) (tree *);
void
c4x_init_pragma (get_token)
int (*get_token) PARAMS ((tree *));
{
c_lex_func = get_token;
}
static int static int
c4x_parse_pragma (name, func, sect) c4x_parse_pragma (name, func, sect)
const char *name; const char *name;
...@@ -4399,25 +4409,25 @@ c4x_parse_pragma (name, func, sect) ...@@ -4399,25 +4409,25 @@ c4x_parse_pragma (name, func, sect)
{ {
tree f, s, x; tree f, s, x;
if (c_lex (&x) != CPP_OPEN_PAREN) if (c_lex_func (&x) != CPP_OPEN_PAREN)
BAD ("missing '(' after '#pragma %s' - ignored", name); BAD ("missing '(' after '#pragma %s' - ignored", name);
if (c_lex (&f) != CPP_NAME) if (c_lex_func (&f) != CPP_NAME)
BAD ("missing function name in '#pragma %s' - ignored", name); BAD ("missing function name in '#pragma %s' - ignored", name);
if (sect) if (sect)
{ {
if (c_lex (&x) != CPP_COMMA) if (c_lex_func (&x) != CPP_COMMA)
BAD ("malformed '#pragma %s' - ignored", name); BAD ("malformed '#pragma %s' - ignored", name);
if (c_lex (&s) != CPP_STRING) if (c_lex_func (&s) != CPP_STRING)
BAD ("missing section name in '#pragma %s' - ignored", name); BAD ("missing section name in '#pragma %s' - ignored", name);
*sect = s; *sect = s;
} }
if (c_lex (&x) != CPP_CLOSE_PAREN) if (c_lex_func (&x) != CPP_CLOSE_PAREN)
BAD ("missing ')' for '#pragma %s' - ignored", name); BAD ("missing ')' for '#pragma %s' - ignored", name);
if (c_lex (&x) != CPP_EOF) if (c_lex_func (&x) != CPP_EOF)
warning ("junk at end of '#pragma %s'", name); warning ("junk at end of '#pragma %s'", name);
*func = f; *func = f;
......
...@@ -2385,6 +2385,7 @@ asm_fprintf (FILE, "%s%d:\n", PREFIX, NUM) ...@@ -2385,6 +2385,7 @@ asm_fprintf (FILE, "%s%d:\n", PREFIX, NUM)
cpp_register_pragma (PFILE, 0, "FUNC_NO_GLOBAL_ASG", c4x_pr_ignored); \ cpp_register_pragma (PFILE, 0, "FUNC_NO_GLOBAL_ASG", c4x_pr_ignored); \
cpp_register_pragma (PFILE, 0, "FUNC_NO_IND_ASG", c4x_pr_ignored); \ cpp_register_pragma (PFILE, 0, "FUNC_NO_IND_ASG", c4x_pr_ignored); \
cpp_register_pragma (PFILE, 0, "INTERRUPT", c4x_pr_INTERRUPT); \ cpp_register_pragma (PFILE, 0, "INTERRUPT", c4x_pr_INTERRUPT); \
c4x_init_pragma (&c_lex); \
} while (0) } while (0)
#define SET_DEFAULT_DECL_ATTRIBUTES(DECL, ATTRIBUTES) \ #define SET_DEFAULT_DECL_ATTRIBUTES(DECL, ATTRIBUTES) \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment