/* v850 specific, C compiler specific functions.
- Copyright (C) 2000 Free Software Foundation, Inc.
+ Copyright (C) 2000, 2007 Free Software Foundation, Inc.
Contributed by Jeff Law (law@cygnus.com).
-This file is part of GNU CC.
+This file is part of GCC.
-GNU CC is free software; you can redistribute it and/or modify
+GCC is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
+the Free Software Foundation; either version 3, or (at your option)
any later version.
-GNU CC is distributed in the hope that it will be useful,
+GCC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
-along with GNU CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
+along with GCC; see the file COPYING3. If not see
+<http://www.gnu.org/licenses/>. */
#include "config.h"
#include "system.h"
+#include "coretypes.h"
+#include "tm.h"
#include "cpplib.h"
#include "tree.h"
#include "c-pragma.h"
-#include "c-lex.h"
#include "toplev.h"
#include "ggc.h"
#include "tm_p.h"
#define streq(a,b) (strcmp (a, b) == 0)
#endif
\f
-static int pop_data_area PARAMS ((v850_data_area));
-static int push_data_area PARAMS ((v850_data_area));
-static void mark_current_function_as_interrupt PARAMS ((void));
+static int pop_data_area (v850_data_area);
+static int push_data_area (v850_data_area);
+static void mark_current_function_as_interrupt (void);
\f
/* Push a data area onto the stack. */
static int
-push_data_area (data_area)
- v850_data_area data_area;
+push_data_area (v850_data_area data_area)
{
data_area_stack_element * elem;
/* Remove a data area from the stack. */
static int
-pop_data_area (data_area)
- v850_data_area data_area;
+pop_data_area (v850_data_area data_area)
{
if (data_area_stack == NULL)
- warning ("#pragma GHS endXXXX found without previous startXXX");
+ warning (OPT_Wpragmas, "#pragma GHS endXXXX found without "
+ "previous startXXX");
else if (data_area != data_area_stack->data_area)
- warning ("#pragma GHS endXXX does not match previous startXXX");
+ warning (OPT_Wpragmas, "#pragma GHS endXXX does not match "
+ "previous startXXX");
else
{
data_area_stack_element * elem;
/* Set the machine specific 'interrupt' attribute on the current function. */
static void
-mark_current_function_as_interrupt ()
+mark_current_function_as_interrupt (void)
{
tree name;
if (current_function_decl == NULL_TREE)
{
- warning ("cannot set interrupt attribute: no current function");
+ warning (0, "cannot set interrupt attribute: no current function");
return;
}
if (name == NULL_TREE || TREE_CODE (name) != IDENTIFIER_NODE)
{
- warning ("cannot set interrupt attribute: no such identifier");
+ warning (0, "cannot set interrupt attribute: no such identifier");
return;
}
/* Support for GHS pragmata. */
void
-ghs_pragma_section (pfile)
- cpp_reader *pfile ATTRIBUTE_UNUSED;
+ghs_pragma_section (cpp_reader * pfile ATTRIBUTE_UNUSED)
{
int repeat;
const char *sect, *alias;
enum GHS_section_kind kind;
- type = c_lex (&x);
+ type = pragma_lex (&x);
if (type == CPP_EOF && !repeat)
goto reset;
goto bad;
repeat = 0;
- if (c_lex (&x) != CPP_EQ)
+ if (pragma_lex (&x) != CPP_EQ)
goto bad;
- if (c_lex (&x) != CPP_NAME)
+ if (pragma_lex (&x) != CPP_NAME)
goto bad;
alias = IDENTIFIER_POINTER (x);
- type = c_lex (&x);
+ type = pragma_lex (&x);
if (type == CPP_COMMA)
repeat = 1;
else if (type != CPP_EOF)
- warning ("junk at end of #pragma ghs section");
+ warning (OPT_Wpragmas, "junk at end of #pragma ghs section");
if (streq (sect, "data")) kind = GHS_SECTION_KIND_DATA;
else if (streq (sect, "text")) kind = GHS_SECTION_KIND_TEXT;
else if (streq (sect, "zbss")) kind = GHS_SECTION_KIND_ZDATA;
else
{
- warning ("unrecognized section name \"%s\"", sect);
+ warning (0, "unrecognized section name \"%s\"", sect);
return;
}
return;
bad:
- warning ("malformed #pragma ghs section");
+ warning (OPT_Wpragmas, "malformed #pragma ghs section");
return;
reset:
}
void
-ghs_pragma_interrupt (pfile)
- cpp_reader *pfile ATTRIBUTE_UNUSED;
+ghs_pragma_interrupt (cpp_reader * pfile ATTRIBUTE_UNUSED)
{
tree x;
- if (c_lex (&x) != CPP_EOF)
- warning ("junk at end of #pragma ghs interrupt");
+ if (pragma_lex (&x) != CPP_EOF)
+ warning (OPT_Wpragmas, "junk at end of #pragma ghs interrupt");
mark_current_function_as_interrupt ();
}
void
-ghs_pragma_starttda (pfile)
- cpp_reader *pfile ATTRIBUTE_UNUSED;
+ghs_pragma_starttda (cpp_reader * pfile ATTRIBUTE_UNUSED)
{
tree x;
- if (c_lex (&x) != CPP_EOF)
- warning ("junk at end of #pragma ghs starttda");
+ if (pragma_lex (&x) != CPP_EOF)
+ warning (OPT_Wpragmas, "junk at end of #pragma ghs starttda");
push_data_area (DATA_AREA_TDA);
}
void
-ghs_pragma_startsda (pfile)
- cpp_reader *pfile ATTRIBUTE_UNUSED;
+ghs_pragma_startsda (cpp_reader * pfile ATTRIBUTE_UNUSED)
{
tree x;
- if (c_lex (&x) != CPP_EOF)
- warning ("junk at end of #pragma ghs startsda");
+ if (pragma_lex (&x) != CPP_EOF)
+ warning (OPT_Wpragmas, "junk at end of #pragma ghs startsda");
push_data_area (DATA_AREA_SDA);
}
void
-ghs_pragma_startzda (pfile)
- cpp_reader *pfile ATTRIBUTE_UNUSED;
+ghs_pragma_startzda (cpp_reader * pfile ATTRIBUTE_UNUSED)
{
tree x;
- if (c_lex (&x) != CPP_EOF)
- warning ("junk at end of #pragma ghs startzda");
+ if (pragma_lex (&x) != CPP_EOF)
+ warning (OPT_Wpragmas, "junk at end of #pragma ghs startzda");
push_data_area (DATA_AREA_ZDA);
}
void
-ghs_pragma_endtda (pfile)
- cpp_reader *pfile ATTRIBUTE_UNUSED;
+ghs_pragma_endtda (cpp_reader * pfile ATTRIBUTE_UNUSED)
{
tree x;
- if (c_lex (&x) != CPP_EOF)
- warning ("junk at end of #pragma ghs endtda");
+ if (pragma_lex (&x) != CPP_EOF)
+ warning (OPT_Wpragmas, "junk at end of #pragma ghs endtda");
pop_data_area (DATA_AREA_TDA);
}
void
-ghs_pragma_endsda (pfile)
- cpp_reader *pfile ATTRIBUTE_UNUSED;
+ghs_pragma_endsda (cpp_reader * pfile ATTRIBUTE_UNUSED)
{
tree x;
- if (c_lex (&x) != CPP_EOF)
- warning ("junk at end of #pragma ghs endsda");
+ if (pragma_lex (&x) != CPP_EOF)
+ warning (OPT_Wpragmas, "junk at end of #pragma ghs endsda");
pop_data_area (DATA_AREA_SDA);
}
void
-ghs_pragma_endzda (pfile)
- cpp_reader *pfile ATTRIBUTE_UNUSED;
+ghs_pragma_endzda (cpp_reader * pfile ATTRIBUTE_UNUSED)
{
tree x;
- if (c_lex (&x) != CPP_EOF)
- warning ("junk at end of #pragma ghs endzda");
+ if (pragma_lex (&x) != CPP_EOF)
+ warning (OPT_Wpragmas, "junk at end of #pragma ghs endzda");
pop_data_area (DATA_AREA_ZDA);
}