mirror of git://gcc.gnu.org/git/gcc.git
c-common.c: Remove USE_CPPLIB conditional inclusions.
* c-common.c: Remove USE_CPPLIB conditional inclusions.
* c-common.h: Similarly.
* c-decl.c: Similarly.
* c-lang.c: Similarly.
* c-lex.c: Similarly.
* c-parse.in: Similarly.
* c-pragma.c: Similarly.
* c-pragma.h: Similarly.
* gcc.c: Similarly.
* toplev.c: Similarly.
* cp/cp-tree.h: Similarly.
* cp/decl2.c: Similarly.
* cp/lang-specs.h: Similarly.
* cp/lex.c: Similarly.
* cp/lex.h: Similarly.
* cp/spew.c: Similarly.
* java/lang-options.h: Similarly.
* objc/lang-specs.h: Similarly.
* objc/objc-act.c: Similarly.
* configure.in: Remove configure option.
* config.in: Regenerate.
* configure: Regenerate.
From-SVN: r37742
This commit is contained in:
parent
3e8aa6e31c
commit
a32f2771a5
|
|
@ -1,3 +1,29 @@
|
||||||
|
2000-11-25 Neil Booth <neilb@earthling.net>
|
||||||
|
|
||||||
|
* c-common.c: Remove USE_CPPLIB conditional inclusions.
|
||||||
|
* c-common.h: Similarly.
|
||||||
|
* c-decl.c: Similarly.
|
||||||
|
* c-lang.c: Similarly.
|
||||||
|
* c-lex.c: Similarly.
|
||||||
|
* c-parse.in: Similarly.
|
||||||
|
* c-pragma.c: Similarly.
|
||||||
|
* c-pragma.h: Similarly.
|
||||||
|
* gcc.c: Similarly.
|
||||||
|
* toplev.c: Similarly.
|
||||||
|
* cp/cp-tree.h: Similarly.
|
||||||
|
* cp/decl2.c: Similarly.
|
||||||
|
* cp/lang-specs.h: Similarly.
|
||||||
|
* cp/lex.c: Similarly.
|
||||||
|
* cp/lex.h: Similarly.
|
||||||
|
* cp/spew.c: Similarly.
|
||||||
|
* java/lang-options.h: Similarly.
|
||||||
|
* objc/lang-specs.h: Similarly.
|
||||||
|
* objc/objc-act.c: Similarly.
|
||||||
|
|
||||||
|
* configure.in: Remove configure option.
|
||||||
|
* config.in: Regenerate.
|
||||||
|
* configure: Regenerate.
|
||||||
|
|
||||||
2000-11-25 Richard Henderson <rth@redhat.com>
|
2000-11-25 Richard Henderson <rth@redhat.com>
|
||||||
|
|
||||||
* haifa-sched.c (sched_analyze_1, sched_analyze_2, sched_analyze):
|
* haifa-sched.c (sched_analyze_1, sched_analyze_2, sched_analyze):
|
||||||
|
|
|
||||||
|
|
@ -34,11 +34,8 @@ Boston, MA 02111-1307, USA. */
|
||||||
#include "intl.h"
|
#include "intl.h"
|
||||||
#include "diagnostic.h"
|
#include "diagnostic.h"
|
||||||
#include "obstack.h"
|
#include "obstack.h"
|
||||||
|
|
||||||
#if USE_CPPLIB
|
|
||||||
#include "cpplib.h"
|
#include "cpplib.h"
|
||||||
cpp_reader parse_in;
|
cpp_reader parse_in;
|
||||||
#endif
|
|
||||||
|
|
||||||
#undef WCHAR_TYPE_SIZE
|
#undef WCHAR_TYPE_SIZE
|
||||||
#define WCHAR_TYPE_SIZE TYPE_PRECISION (wchar_type_node)
|
#define WCHAR_TYPE_SIZE TYPE_PRECISION (wchar_type_node)
|
||||||
|
|
@ -4710,91 +4707,6 @@ truthvalue_conversion (expr)
|
||||||
return build_binary_op (NE_EXPR, expr, integer_zero_node, 1);
|
return build_binary_op (NE_EXPR, expr, integer_zero_node, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !USE_CPPLIB
|
|
||||||
/* Read the rest of a #-directive from input stream FINPUT.
|
|
||||||
In normal use, the directive name and the white space after it
|
|
||||||
have already been read, so they won't be included in the result.
|
|
||||||
We allow for the fact that the directive line may contain
|
|
||||||
a newline embedded within a character or string literal which forms
|
|
||||||
a part of the directive.
|
|
||||||
|
|
||||||
The value is a string in a reusable buffer. It remains valid
|
|
||||||
only until the next time this function is called.
|
|
||||||
|
|
||||||
The terminating character ('\n' or EOF) is left in FINPUT for the
|
|
||||||
caller to re-read. */
|
|
||||||
|
|
||||||
char *
|
|
||||||
get_directive_line (finput)
|
|
||||||
register FILE *finput;
|
|
||||||
{
|
|
||||||
static char *directive_buffer = NULL;
|
|
||||||
static unsigned buffer_length = 0;
|
|
||||||
register char *p;
|
|
||||||
register char *buffer_limit;
|
|
||||||
register int looking_for = 0;
|
|
||||||
register int char_escaped = 0;
|
|
||||||
|
|
||||||
if (buffer_length == 0)
|
|
||||||
{
|
|
||||||
directive_buffer = (char *)xmalloc (128);
|
|
||||||
buffer_length = 128;
|
|
||||||
}
|
|
||||||
|
|
||||||
buffer_limit = &directive_buffer[buffer_length];
|
|
||||||
|
|
||||||
for (p = directive_buffer; ; )
|
|
||||||
{
|
|
||||||
int c;
|
|
||||||
|
|
||||||
/* Make buffer bigger if it is full. */
|
|
||||||
if (p >= buffer_limit)
|
|
||||||
{
|
|
||||||
register unsigned bytes_used = (p - directive_buffer);
|
|
||||||
|
|
||||||
buffer_length *= 2;
|
|
||||||
directive_buffer
|
|
||||||
= (char *)xrealloc (directive_buffer, buffer_length);
|
|
||||||
p = &directive_buffer[bytes_used];
|
|
||||||
buffer_limit = &directive_buffer[buffer_length];
|
|
||||||
}
|
|
||||||
|
|
||||||
c = getc (finput);
|
|
||||||
|
|
||||||
/* Discard initial whitespace. */
|
|
||||||
if ((c == ' ' || c == '\t') && p == directive_buffer)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
/* Detect the end of the directive. */
|
|
||||||
if (looking_for == 0
|
|
||||||
&& (c == '\n' || c == EOF))
|
|
||||||
{
|
|
||||||
ungetc (c, finput);
|
|
||||||
c = '\0';
|
|
||||||
}
|
|
||||||
|
|
||||||
*p++ = c;
|
|
||||||
|
|
||||||
if (c == 0)
|
|
||||||
return directive_buffer;
|
|
||||||
|
|
||||||
/* Handle string and character constant syntax. */
|
|
||||||
if (looking_for)
|
|
||||||
{
|
|
||||||
if (looking_for == c && !char_escaped)
|
|
||||||
looking_for = 0; /* Found terminator... stop looking. */
|
|
||||||
}
|
|
||||||
else
|
|
||||||
if (c == '\'' || c == '"')
|
|
||||||
looking_for = c; /* Don't stop buffering until we see another
|
|
||||||
one of these (or an EOF). */
|
|
||||||
|
|
||||||
/* Handle backslash. */
|
|
||||||
char_escaped = (c == '\\' && ! char_escaped);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif /* USE_CPPLIB */
|
|
||||||
|
|
||||||
/* Make a variant type in the proper way for C/C++, propagating qualifiers
|
/* Make a variant type in the proper way for C/C++, propagating qualifiers
|
||||||
down to the element type of an array. */
|
down to the element type of an array. */
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -463,13 +463,8 @@ extern void overflow_warning PARAMS ((tree));
|
||||||
extern void unsigned_conversion_warning PARAMS ((tree, tree));
|
extern void unsigned_conversion_warning PARAMS ((tree, tree));
|
||||||
|
|
||||||
/* Read the rest of the current #-directive line. */
|
/* Read the rest of the current #-directive line. */
|
||||||
#if USE_CPPLIB
|
|
||||||
extern char *get_directive_line PARAMS ((void));
|
extern char *get_directive_line PARAMS ((void));
|
||||||
#define GET_DIRECTIVE_LINE() get_directive_line ()
|
#define GET_DIRECTIVE_LINE() get_directive_line ()
|
||||||
#else
|
|
||||||
extern char *get_directive_line PARAMS ((FILE *));
|
|
||||||
#define GET_DIRECTIVE_LINE() get_directive_line (finput)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Subroutine of build_binary_op, used for comparison operations.
|
/* Subroutine of build_binary_op, used for comparison operations.
|
||||||
See if the operands have both been converted from subword integer types
|
See if the operands have both been converted from subword integer types
|
||||||
|
|
|
||||||
|
|
@ -41,11 +41,8 @@ Boston, MA 02111-1307, USA. */
|
||||||
#include "defaults.h"
|
#include "defaults.h"
|
||||||
#include "ggc.h"
|
#include "ggc.h"
|
||||||
#include "tm_p.h"
|
#include "tm_p.h"
|
||||||
|
|
||||||
#if USE_CPPLIB
|
|
||||||
#include "cpplib.h"
|
#include "cpplib.h"
|
||||||
extern cpp_reader parse_in;
|
extern cpp_reader parse_in;
|
||||||
#endif
|
|
||||||
|
|
||||||
/* In grokdeclarator, distinguish syntactic contexts of declarators. */
|
/* In grokdeclarator, distinguish syntactic contexts of declarators. */
|
||||||
enum decl_context
|
enum decl_context
|
||||||
|
|
@ -512,11 +509,8 @@ c_decode_option (argc, argv)
|
||||||
int strings_processed;
|
int strings_processed;
|
||||||
const char *option_value = NULL;
|
const char *option_value = NULL;
|
||||||
char *p = argv[0];
|
char *p = argv[0];
|
||||||
#if USE_CPPLIB
|
|
||||||
strings_processed = cpp_handle_option (&parse_in, argc, argv);
|
strings_processed = cpp_handle_option (&parse_in, argc, argv);
|
||||||
#else
|
|
||||||
strings_processed = 0;
|
|
||||||
#endif /* ! USE_CPPLIB */
|
|
||||||
|
|
||||||
if (!strcmp (p, "-lang-objc"))
|
if (!strcmp (p, "-lang-objc"))
|
||||||
c_language = clk_objective_c;
|
c_language = clk_objective_c;
|
||||||
|
|
|
||||||
17
gcc/c-lang.c
17
gcc/c-lang.c
|
|
@ -34,13 +34,10 @@ Boston, MA 02111-1307, USA. */
|
||||||
#include "expr.h"
|
#include "expr.h"
|
||||||
#include "c-tree.h"
|
#include "c-tree.h"
|
||||||
#include "c-lex.h"
|
#include "c-lex.h"
|
||||||
|
|
||||||
static int c_tree_printer PARAMS ((output_buffer *));
|
|
||||||
|
|
||||||
#if USE_CPPLIB
|
|
||||||
#include "cpplib.h"
|
#include "cpplib.h"
|
||||||
|
|
||||||
extern cpp_reader parse_in;
|
extern cpp_reader parse_in;
|
||||||
#endif
|
static int c_tree_printer PARAMS ((output_buffer *));
|
||||||
|
|
||||||
/* Each of the functions defined here
|
/* Each of the functions defined here
|
||||||
is an alternative to a function in objc-actions.c. */
|
is an alternative to a function in objc-actions.c. */
|
||||||
|
|
@ -56,10 +53,9 @@ lang_decode_option (argc, argv)
|
||||||
void
|
void
|
||||||
lang_init_options ()
|
lang_init_options ()
|
||||||
{
|
{
|
||||||
#if USE_CPPLIB
|
|
||||||
cpp_init ();
|
cpp_init ();
|
||||||
cpp_reader_init (&parse_in, CLK_GNUC89);
|
cpp_reader_init (&parse_in, CLK_GNUC89);
|
||||||
#endif
|
|
||||||
/* Mark as "unspecified". */
|
/* Mark as "unspecified". */
|
||||||
flag_bounds_check = -1;
|
flag_bounds_check = -1;
|
||||||
}
|
}
|
||||||
|
|
@ -80,13 +76,6 @@ lang_init ()
|
||||||
mesg_implicit_function_declaration = 0;
|
mesg_implicit_function_declaration = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* the beginning of the file is a new line; check for # */
|
|
||||||
/* With luck, we discover the real source file's name from that
|
|
||||||
and put it in input_filename. */
|
|
||||||
#if !USE_CPPLIB
|
|
||||||
ungetc (check_newline (), finput);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
save_lang_status = &push_c_function_context;
|
save_lang_status = &push_c_function_context;
|
||||||
restore_lang_status = &pop_c_function_context;
|
restore_lang_status = &pop_c_function_context;
|
||||||
mark_lang_status = &mark_c_function_context;
|
mark_lang_status = &mark_c_function_context;
|
||||||
|
|
|
||||||
607
gcc/c-lex.c
607
gcc/c-lex.c
|
|
@ -53,12 +53,7 @@ Boston, MA 02111-1307, USA. */
|
||||||
#define GET_ENVIRONMENT(ENV_VALUE,ENV_NAME) ((ENV_VALUE) = getenv (ENV_NAME))
|
#define GET_ENVIRONMENT(ENV_VALUE,ENV_NAME) ((ENV_VALUE) = getenv (ENV_NAME))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if USE_CPPLIB
|
|
||||||
extern cpp_reader parse_in;
|
extern cpp_reader parse_in;
|
||||||
#else
|
|
||||||
/* Stream for reading from the input file. */
|
|
||||||
FILE *finput;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* The original file name, before changing "-" to "stdin". */
|
/* The original file name, before changing "-" to "stdin". */
|
||||||
static const char *orig_filename;
|
static const char *orig_filename;
|
||||||
|
|
@ -73,52 +68,6 @@ static splay_tree file_info_tree;
|
||||||
/* Cause the `yydebug' variable to be defined. */
|
/* Cause the `yydebug' variable to be defined. */
|
||||||
#define YYDEBUG 1
|
#define YYDEBUG 1
|
||||||
|
|
||||||
#if !USE_CPPLIB
|
|
||||||
|
|
||||||
struct putback_buffer
|
|
||||||
{
|
|
||||||
unsigned char *buffer;
|
|
||||||
int buffer_size;
|
|
||||||
int index;
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct putback_buffer putback = {NULL, 0, -1};
|
|
||||||
|
|
||||||
static inline int getch PARAMS ((void));
|
|
||||||
|
|
||||||
static inline int
|
|
||||||
getch ()
|
|
||||||
{
|
|
||||||
if (putback.index != -1)
|
|
||||||
{
|
|
||||||
int ch = putback.buffer[putback.index];
|
|
||||||
--putback.index;
|
|
||||||
return ch;
|
|
||||||
}
|
|
||||||
return getc (finput);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void put_back PARAMS ((int));
|
|
||||||
|
|
||||||
static inline void
|
|
||||||
put_back (ch)
|
|
||||||
int ch;
|
|
||||||
{
|
|
||||||
if (ch != EOF)
|
|
||||||
{
|
|
||||||
if (putback.index == putback.buffer_size - 1)
|
|
||||||
{
|
|
||||||
putback.buffer_size += 16;
|
|
||||||
putback.buffer = xrealloc (putback.buffer, putback.buffer_size);
|
|
||||||
}
|
|
||||||
putback.buffer[++putback.index] = ch;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int linemode;
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* File used for outputting assembler code. */
|
/* File used for outputting assembler code. */
|
||||||
extern FILE *asm_out_file;
|
extern FILE *asm_out_file;
|
||||||
|
|
||||||
|
|
@ -128,12 +77,6 @@ extern FILE *asm_out_file;
|
||||||
/* Number of bytes in a wide character. */
|
/* Number of bytes in a wide character. */
|
||||||
#define WCHAR_BYTES (WCHAR_TYPE_SIZE / BITS_PER_UNIT)
|
#define WCHAR_BYTES (WCHAR_TYPE_SIZE / BITS_PER_UNIT)
|
||||||
|
|
||||||
#if !USE_CPPLIB
|
|
||||||
static int maxtoken; /* Current nominal length of token buffer. */
|
|
||||||
static char *token_buffer; /* Pointer to token buffer.
|
|
||||||
Actual allocated length is maxtoken + 2. */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
int indent_level; /* Number of { minus number of }. */
|
int indent_level; /* Number of { minus number of }. */
|
||||||
int pending_lang_change; /* If we need to switch languages - C++ only */
|
int pending_lang_change; /* If we need to switch languages - C++ only */
|
||||||
int c_header_level; /* depth in C headers - C++ only */
|
int c_header_level; /* depth in C headers - C++ only */
|
||||||
|
|
@ -151,21 +94,11 @@ static tree lex_string PARAMS ((const char *, unsigned int, int));
|
||||||
static tree lex_charconst PARAMS ((const char *, unsigned int, int));
|
static tree lex_charconst PARAMS ((const char *, unsigned int, int));
|
||||||
static void update_header_times PARAMS ((const char *));
|
static void update_header_times PARAMS ((const char *));
|
||||||
static int dump_one_header PARAMS ((splay_tree_node, void *));
|
static int dump_one_header PARAMS ((splay_tree_node, void *));
|
||||||
|
|
||||||
#if !USE_CPPLIB
|
|
||||||
static int skip_white_space PARAMS ((int));
|
|
||||||
static char *extend_token_buffer PARAMS ((const char *));
|
|
||||||
static void extend_token_buffer_to PARAMS ((int));
|
|
||||||
static int read_line_number PARAMS ((int *));
|
|
||||||
static void process_directive PARAMS ((void));
|
|
||||||
#else
|
|
||||||
static void cb_ident PARAMS ((cpp_reader *, const cpp_string *));
|
static void cb_ident PARAMS ((cpp_reader *, const cpp_string *));
|
||||||
static void cb_enter_file PARAMS ((cpp_reader *));
|
static void cb_enter_file PARAMS ((cpp_reader *));
|
||||||
static void cb_leave_file PARAMS ((cpp_reader *));
|
static void cb_leave_file PARAMS ((cpp_reader *));
|
||||||
static void cb_rename_file PARAMS ((cpp_reader *));
|
static void cb_rename_file PARAMS ((cpp_reader *));
|
||||||
static void cb_def_pragma PARAMS ((cpp_reader *));
|
static void cb_def_pragma PARAMS ((cpp_reader *));
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
init_c_lex (filename)
|
init_c_lex (filename)
|
||||||
|
|
@ -193,23 +126,6 @@ init_c_lex (filename)
|
||||||
GET_ENVIRONMENT (literal_codeset, "LANG");
|
GET_ENVIRONMENT (literal_codeset, "LANG");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !USE_CPPLIB
|
|
||||||
/* Open input file. */
|
|
||||||
if (filename == 0 || !strcmp (filename, "-"))
|
|
||||||
{
|
|
||||||
finput = stdin;
|
|
||||||
filename = "stdin";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
finput = fopen (filename, "r");
|
|
||||||
if (finput == 0)
|
|
||||||
pfatal_with_name (filename);
|
|
||||||
|
|
||||||
#ifdef IO_BUFFER_SIZE
|
|
||||||
setvbuf (finput, (char *) xmalloc (IO_BUFFER_SIZE), _IOFBF, IO_BUFFER_SIZE);
|
|
||||||
#endif
|
|
||||||
#else /* !USE_CPPLIB */
|
|
||||||
|
|
||||||
parse_in.cb.ident = cb_ident;
|
parse_in.cb.ident = cb_ident;
|
||||||
parse_in.cb.enter_file = cb_enter_file;
|
parse_in.cb.enter_file = cb_enter_file;
|
||||||
parse_in.cb.leave_file = cb_leave_file;
|
parse_in.cb.leave_file = cb_leave_file;
|
||||||
|
|
@ -221,12 +137,7 @@ init_c_lex (filename)
|
||||||
|
|
||||||
if (filename == 0 || !strcmp (filename, "-"))
|
if (filename == 0 || !strcmp (filename, "-"))
|
||||||
filename = "stdin";
|
filename = "stdin";
|
||||||
#endif
|
|
||||||
|
|
||||||
#if !USE_CPPLIB
|
|
||||||
maxtoken = 40;
|
|
||||||
token_buffer = (char *) xmalloc (maxtoken + 2);
|
|
||||||
#endif
|
|
||||||
/* Start it at 0, because check_newline is called at the very beginning
|
/* Start it at 0, because check_newline is called at the very beginning
|
||||||
and will increment it to 1. */
|
and will increment it to 1. */
|
||||||
lineno = lex_lineno = 0;
|
lineno = lex_lineno = 0;
|
||||||
|
|
@ -309,140 +220,7 @@ dump_time_statistics ()
|
||||||
splay_tree_foreach (file_info_tree, dump_one_header, 0);
|
splay_tree_foreach (file_info_tree, dump_one_header, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !USE_CPPLIB
|
#if 0 /* Keep this code for a while for reference. */
|
||||||
|
|
||||||
/* If C is not whitespace, return C.
|
|
||||||
Otherwise skip whitespace and return first nonwhite char read. */
|
|
||||||
|
|
||||||
static int
|
|
||||||
skip_white_space (c)
|
|
||||||
register int c;
|
|
||||||
{
|
|
||||||
for (;;)
|
|
||||||
{
|
|
||||||
switch (c)
|
|
||||||
{
|
|
||||||
/* There is no need to process comments or backslash-newline
|
|
||||||
here. None can occur in the output of cpp. Do handle \r
|
|
||||||
in case someone sent us a .i file. */
|
|
||||||
|
|
||||||
case '\n':
|
|
||||||
if (linemode)
|
|
||||||
{
|
|
||||||
put_back (c);
|
|
||||||
return EOF;
|
|
||||||
}
|
|
||||||
c = check_newline ();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '\r':
|
|
||||||
/* Per C99, horizontal whitespace is just these four characters. */
|
|
||||||
case ' ':
|
|
||||||
case '\t':
|
|
||||||
case '\f':
|
|
||||||
case '\v':
|
|
||||||
c = getch ();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '\\':
|
|
||||||
error ("stray '\\' in program");
|
|
||||||
c = getch ();
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
return (c);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Skips all of the white space at the current location in the input file. */
|
|
||||||
|
|
||||||
void
|
|
||||||
position_after_white_space ()
|
|
||||||
{
|
|
||||||
register int c;
|
|
||||||
|
|
||||||
c = getch ();
|
|
||||||
|
|
||||||
put_back (skip_white_space (c));
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Make the token buffer longer, preserving the data in it.
|
|
||||||
P should point to just beyond the last valid character in the old buffer.
|
|
||||||
The value we return is a pointer to the new buffer
|
|
||||||
at a place corresponding to P. */
|
|
||||||
|
|
||||||
static void
|
|
||||||
extend_token_buffer_to (size)
|
|
||||||
int size;
|
|
||||||
{
|
|
||||||
do
|
|
||||||
maxtoken = maxtoken * 2 + 10;
|
|
||||||
while (maxtoken < size);
|
|
||||||
token_buffer = (char *) xrealloc (token_buffer, maxtoken + 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
static char *
|
|
||||||
extend_token_buffer (p)
|
|
||||||
const char *p;
|
|
||||||
{
|
|
||||||
int offset = p - token_buffer;
|
|
||||||
extend_token_buffer_to (offset);
|
|
||||||
return token_buffer + offset;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static int
|
|
||||||
read_line_number (num)
|
|
||||||
int *num;
|
|
||||||
{
|
|
||||||
tree value;
|
|
||||||
enum cpp_ttype token = c_lex (&value);
|
|
||||||
|
|
||||||
if (token == CPP_NUMBER && TREE_CODE (value) == INTEGER_CST)
|
|
||||||
{
|
|
||||||
*num = TREE_INT_CST_LOW (value);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (token != CPP_EOF)
|
|
||||||
error ("invalid #-line");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* At the beginning of a line, increment the line number
|
|
||||||
and process any #-directive on this line.
|
|
||||||
If the line is a #-directive, read the entire line and return a newline.
|
|
||||||
Otherwise, return the line's first non-whitespace character. */
|
|
||||||
|
|
||||||
int
|
|
||||||
check_newline ()
|
|
||||||
{
|
|
||||||
register int c;
|
|
||||||
|
|
||||||
/* Loop till we get a nonblank, non-directive line. */
|
|
||||||
for (;;)
|
|
||||||
{
|
|
||||||
/* Read first nonwhite char on the line. */
|
|
||||||
do
|
|
||||||
c = getch ();
|
|
||||||
while (c == ' ' || c == '\t');
|
|
||||||
|
|
||||||
lex_lineno++;
|
|
||||||
if (c == '#')
|
|
||||||
{
|
|
||||||
process_directive ();
|
|
||||||
return '\n';
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (c != '\n')
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return c;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
process_directive ()
|
process_directive ()
|
||||||
{
|
{
|
||||||
|
|
@ -674,7 +452,7 @@ linenum:
|
||||||
|
|
||||||
while (getch () != '\n');
|
while (getch () != '\n');
|
||||||
}
|
}
|
||||||
#else /* USE_CPPLIB */
|
#endif
|
||||||
|
|
||||||
/* Not yet handled: #pragma, #define, #undef.
|
/* Not yet handled: #pragma, #define, #undef.
|
||||||
No need to deal with linemarkers under normal conditions. */
|
No need to deal with linemarkers under normal conditions. */
|
||||||
|
|
@ -810,7 +588,6 @@ cb_def_pragma (pfile)
|
||||||
warning ("ignoring #pragma %s", space);
|
warning ("ignoring #pragma %s", space);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif /* USE_CPPLIB */
|
|
||||||
|
|
||||||
/* Parse a '\uNNNN' or '\UNNNNNNNN' sequence.
|
/* Parse a '\uNNNN' or '\UNNNNNNNN' sequence.
|
||||||
|
|
||||||
|
|
@ -1430,7 +1207,6 @@ int
|
||||||
c_lex (value)
|
c_lex (value)
|
||||||
tree *value;
|
tree *value;
|
||||||
{
|
{
|
||||||
#if USE_CPPLIB
|
|
||||||
cpp_token tok;
|
cpp_token tok;
|
||||||
enum cpp_ttype type;
|
enum cpp_ttype type;
|
||||||
|
|
||||||
|
|
@ -1493,387 +1269,8 @@ c_lex (value)
|
||||||
}
|
}
|
||||||
|
|
||||||
return type;
|
return type;
|
||||||
|
|
||||||
#else
|
|
||||||
int c;
|
|
||||||
char *p;
|
|
||||||
int wide_flag = 0;
|
|
||||||
int objc_flag = 0;
|
|
||||||
int charconst = 0;
|
|
||||||
|
|
||||||
*value = NULL_TREE;
|
|
||||||
|
|
||||||
retry:
|
|
||||||
c = getch ();
|
|
||||||
|
|
||||||
/* Effectively do c = skip_white_space (c)
|
|
||||||
but do it faster in the usual cases. */
|
|
||||||
while (1)
|
|
||||||
switch (c)
|
|
||||||
{
|
|
||||||
case ' ':
|
|
||||||
case '\t':
|
|
||||||
case '\f':
|
|
||||||
case '\v':
|
|
||||||
c = getch ();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '\r':
|
|
||||||
case '\n':
|
|
||||||
c = skip_white_space (c);
|
|
||||||
default:
|
|
||||||
goto found_nonwhite;
|
|
||||||
}
|
|
||||||
found_nonwhite:
|
|
||||||
|
|
||||||
lineno = lex_lineno;
|
|
||||||
|
|
||||||
switch (c)
|
|
||||||
{
|
|
||||||
case EOF:
|
|
||||||
return CPP_EOF;
|
|
||||||
|
|
||||||
case 'L':
|
|
||||||
/* Capital L may start a wide-string or wide-character constant. */
|
|
||||||
{
|
|
||||||
register int c1 = getch();
|
|
||||||
if (c1 == '\'')
|
|
||||||
{
|
|
||||||
wide_flag = 1;
|
|
||||||
goto char_constant;
|
|
||||||
}
|
|
||||||
if (c1 == '"')
|
|
||||||
{
|
|
||||||
wide_flag = 1;
|
|
||||||
goto string_constant;
|
|
||||||
}
|
|
||||||
put_back (c1);
|
|
||||||
}
|
|
||||||
goto letter;
|
|
||||||
|
|
||||||
case '@':
|
|
||||||
if (!doing_objc_thang)
|
|
||||||
goto straychar;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/* '@' may start a constant string object. */
|
|
||||||
register int c1 = getch ();
|
|
||||||
if (c1 == '"')
|
|
||||||
{
|
|
||||||
objc_flag = 1;
|
|
||||||
goto string_constant;
|
|
||||||
}
|
|
||||||
put_back (c1);
|
|
||||||
/* Fall through to treat '@' as the start of an identifier. */
|
|
||||||
}
|
|
||||||
|
|
||||||
case 'A': case 'B': case 'C': case 'D': case 'E':
|
|
||||||
case 'F': case 'G': case 'H': case 'I': case 'J':
|
|
||||||
case 'K': case 'M': case 'N': case 'O':
|
|
||||||
case 'P': case 'Q': case 'R': case 'S': case 'T':
|
|
||||||
case 'U': case 'V': case 'W': case 'X': case 'Y':
|
|
||||||
case 'Z':
|
|
||||||
case 'a': case 'b': case 'c': case 'd': case 'e':
|
|
||||||
case 'f': case 'g': case 'h': case 'i': case 'j':
|
|
||||||
case 'k': case 'l': case 'm': case 'n': case 'o':
|
|
||||||
case 'p': case 'q': case 'r': case 's': case 't':
|
|
||||||
case 'u': case 'v': case 'w': case 'x': case 'y':
|
|
||||||
case 'z':
|
|
||||||
case '_':
|
|
||||||
case '$':
|
|
||||||
letter:
|
|
||||||
p = token_buffer;
|
|
||||||
while (ISALNUM (c) || c == '_' || c == '$' || c == '@')
|
|
||||||
{
|
|
||||||
/* Make sure this char really belongs in an identifier. */
|
|
||||||
if (c == '$')
|
|
||||||
{
|
|
||||||
if (! dollars_in_ident)
|
|
||||||
error ("'$' in identifier");
|
|
||||||
else if (pedantic)
|
|
||||||
pedwarn ("'$' in identifier");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (p >= token_buffer + maxtoken)
|
|
||||||
p = extend_token_buffer (p);
|
|
||||||
|
|
||||||
*p++ = c;
|
|
||||||
c = getch();
|
|
||||||
}
|
|
||||||
|
|
||||||
put_back (c);
|
|
||||||
|
|
||||||
if (p >= token_buffer + maxtoken)
|
|
||||||
p = extend_token_buffer (p);
|
|
||||||
*p = 0;
|
|
||||||
|
|
||||||
*value = get_identifier (token_buffer);
|
|
||||||
return CPP_NAME;
|
|
||||||
|
|
||||||
case '.':
|
|
||||||
{
|
|
||||||
/* It's hard to preserve tokenization on '.' because
|
|
||||||
it could be a symbol by itself, or it could be the
|
|
||||||
start of a floating point number and cpp won't tell us. */
|
|
||||||
int c1 = getch ();
|
|
||||||
if (c1 == '.')
|
|
||||||
{
|
|
||||||
int c2 = getch ();
|
|
||||||
if (c2 == '.')
|
|
||||||
return CPP_ELLIPSIS;
|
|
||||||
|
|
||||||
put_back (c2);
|
|
||||||
error ("parse error at '..'");
|
|
||||||
}
|
|
||||||
else if (c1 == '*' && c_language == clk_cplusplus)
|
|
||||||
return CPP_DOT_STAR;
|
|
||||||
|
|
||||||
put_back (c1);
|
|
||||||
if (ISDIGIT (c1))
|
|
||||||
goto number;
|
|
||||||
}
|
|
||||||
return CPP_DOT;
|
|
||||||
|
|
||||||
case '0': case '1': case '2': case '3': case '4':
|
|
||||||
case '5': case '6': case '7': case '8': case '9':
|
|
||||||
number:
|
|
||||||
p = token_buffer;
|
|
||||||
/* Scan the next preprocessing number. All C numeric constants
|
|
||||||
are preprocessing numbers, but not all preprocessing numbers
|
|
||||||
are valid numeric constants. Preprocessing numbers fit the
|
|
||||||
regular expression \.?[0-9]([0-9a-zA-Z_.]|[eEpP][+-])*
|
|
||||||
See C99 section 6.4.8. */
|
|
||||||
for (;;)
|
|
||||||
{
|
|
||||||
if (p >= token_buffer + maxtoken)
|
|
||||||
p = extend_token_buffer (p);
|
|
||||||
|
|
||||||
*p++ = c;
|
|
||||||
c = getch();
|
|
||||||
|
|
||||||
if (c == '+' || c == '-')
|
|
||||||
{
|
|
||||||
int d = p[-1];
|
|
||||||
if (d == 'e' || d == 'E' || d == 'p' || d == 'P')
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (ISALNUM (c) || c == '_' || c == '.')
|
|
||||||
continue;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
put_back (c);
|
|
||||||
|
|
||||||
*value = lex_number (token_buffer, p - token_buffer);
|
|
||||||
return CPP_NUMBER;
|
|
||||||
|
|
||||||
case '\'':
|
|
||||||
char_constant:
|
|
||||||
charconst = 1;
|
|
||||||
|
|
||||||
case '"':
|
|
||||||
string_constant:
|
|
||||||
{
|
|
||||||
int delimiter = charconst ? '\'' : '"';
|
|
||||||
#ifdef MULTIBYTE_CHARS
|
|
||||||
int longest_char = local_mb_cur_max ();
|
|
||||||
(void) local_mbtowc (NULL_PTR, NULL_PTR, 0);
|
|
||||||
#endif
|
|
||||||
c = getch ();
|
|
||||||
p = token_buffer + 1;
|
|
||||||
|
|
||||||
while (c != delimiter && c != EOF)
|
|
||||||
{
|
|
||||||
if (p + 2 > token_buffer + maxtoken)
|
|
||||||
p = extend_token_buffer (p);
|
|
||||||
|
|
||||||
/* ignore_escape_flag is set for reading the filename in #line. */
|
|
||||||
if (!ignore_escape_flag && c == '\\')
|
|
||||||
{
|
|
||||||
*p++ = c;
|
|
||||||
*p++ = getch (); /* escaped character */
|
|
||||||
c = getch ();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
#ifdef MULTIBYTE_CHARS
|
|
||||||
int i;
|
|
||||||
int char_len = -1;
|
|
||||||
for (i = 0; i < longest_char; ++i)
|
|
||||||
{
|
|
||||||
if (p + i >= token_buffer + maxtoken)
|
|
||||||
p = extend_token_buffer (p);
|
|
||||||
p[i] = c;
|
|
||||||
|
|
||||||
char_len = local_mblen (p, i + 1);
|
|
||||||
if (char_len != -1)
|
|
||||||
break;
|
|
||||||
c = getch ();
|
|
||||||
}
|
|
||||||
if (char_len == -1)
|
|
||||||
{
|
|
||||||
/* Replace all except the first byte. */
|
|
||||||
put_back (c);
|
|
||||||
for (--i; i > 0; --i)
|
|
||||||
put_back (p[i]);
|
|
||||||
char_len = 1;
|
|
||||||
}
|
|
||||||
/* mbtowc sometimes needs an extra char before accepting */
|
|
||||||
else if (char_len <= i)
|
|
||||||
put_back (c);
|
|
||||||
|
|
||||||
p += char_len;
|
|
||||||
#else
|
|
||||||
*p++ = c;
|
|
||||||
#endif
|
|
||||||
c = getch ();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (charconst)
|
|
||||||
{
|
|
||||||
*value = lex_charconst (token_buffer + 1, p - (token_buffer + 1),
|
|
||||||
wide_flag);
|
|
||||||
return wide_flag ? CPP_WCHAR : CPP_CHAR;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
*value = lex_string (token_buffer + 1, p - (token_buffer + 1),
|
|
||||||
wide_flag);
|
|
||||||
return wide_flag ? CPP_WSTRING : objc_flag ? CPP_OSTRING : CPP_STRING;
|
|
||||||
}
|
|
||||||
|
|
||||||
case '+':
|
|
||||||
case '-':
|
|
||||||
case '&':
|
|
||||||
case '|':
|
|
||||||
case ':':
|
|
||||||
case '<':
|
|
||||||
case '>':
|
|
||||||
case '*':
|
|
||||||
case '/':
|
|
||||||
case '%':
|
|
||||||
case '^':
|
|
||||||
case '!':
|
|
||||||
case '=':
|
|
||||||
{
|
|
||||||
int c1;
|
|
||||||
enum cpp_ttype type = CPP_EOF;
|
|
||||||
|
|
||||||
switch (c)
|
|
||||||
{
|
|
||||||
case '+': type = CPP_PLUS; break;
|
|
||||||
case '-': type = CPP_MINUS; break;
|
|
||||||
case '&': type = CPP_AND; break;
|
|
||||||
case '|': type = CPP_OR; break;
|
|
||||||
case ':': type = CPP_COLON; break;
|
|
||||||
case '<': type = CPP_LESS; break;
|
|
||||||
case '>': type = CPP_GREATER; break;
|
|
||||||
case '*': type = CPP_MULT; break;
|
|
||||||
case '/': type = CPP_DIV; break;
|
|
||||||
case '%': type = CPP_MOD; break;
|
|
||||||
case '^': type = CPP_XOR; break;
|
|
||||||
case '!': type = CPP_NOT; break;
|
|
||||||
case '=': type = CPP_EQ; break;
|
|
||||||
}
|
|
||||||
|
|
||||||
c1 = getch ();
|
|
||||||
|
|
||||||
if (c1 == '=' && type < CPP_LAST_EQ)
|
|
||||||
return type + (CPP_EQ_EQ - CPP_EQ);
|
|
||||||
else if (c == c1)
|
|
||||||
switch (c)
|
|
||||||
{
|
|
||||||
case '+': return CPP_PLUS_PLUS;
|
|
||||||
case '-': return CPP_MINUS_MINUS;
|
|
||||||
case '&': return CPP_AND_AND;
|
|
||||||
case '|': return CPP_OR_OR;
|
|
||||||
case ':':
|
|
||||||
if (c_language == clk_cplusplus)
|
|
||||||
return CPP_SCOPE;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '<': type = CPP_LSHIFT; goto do_triad;
|
|
||||||
case '>': type = CPP_RSHIFT; goto do_triad;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
switch (c)
|
|
||||||
{
|
|
||||||
case '-':
|
|
||||||
if (c1 == '>')
|
|
||||||
{
|
|
||||||
if (c_language == clk_cplusplus)
|
|
||||||
{
|
|
||||||
c1 = getch ();
|
|
||||||
if (c1 == '*')
|
|
||||||
return CPP_DEREF_STAR;
|
|
||||||
put_back (c1);
|
|
||||||
}
|
|
||||||
return CPP_DEREF;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '>':
|
|
||||||
if (c1 == '?' && c_language == clk_cplusplus)
|
|
||||||
{ type = CPP_MAX; goto do_triad; }
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '<':
|
|
||||||
if (c1 == ':' && flag_digraphs)
|
|
||||||
return CPP_OPEN_SQUARE;
|
|
||||||
if (c1 == '%' && flag_digraphs)
|
|
||||||
{ indent_level++; return CPP_OPEN_BRACE; }
|
|
||||||
if (c1 == '?' && c_language == clk_cplusplus)
|
|
||||||
{ type = CPP_MIN; goto do_triad; }
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ':':
|
|
||||||
if (c1 == '>' && flag_digraphs)
|
|
||||||
return CPP_CLOSE_SQUARE;
|
|
||||||
break;
|
|
||||||
case '%':
|
|
||||||
if (c1 == '>' && flag_digraphs)
|
|
||||||
{ indent_level--; return CPP_CLOSE_BRACE; }
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
put_back (c1);
|
|
||||||
return type;
|
|
||||||
|
|
||||||
do_triad:
|
|
||||||
c1 = getch ();
|
|
||||||
if (c1 == '=')
|
|
||||||
type += (CPP_EQ_EQ - CPP_EQ);
|
|
||||||
else
|
|
||||||
put_back (c1);
|
|
||||||
return type;
|
|
||||||
}
|
|
||||||
|
|
||||||
case '~': return CPP_COMPL;
|
|
||||||
case '?': return CPP_QUERY;
|
|
||||||
case ',': return CPP_COMMA;
|
|
||||||
case '(': return CPP_OPEN_PAREN;
|
|
||||||
case ')': return CPP_CLOSE_PAREN;
|
|
||||||
case '[': return CPP_OPEN_SQUARE;
|
|
||||||
case ']': return CPP_CLOSE_SQUARE;
|
|
||||||
case '{': indent_level++; return CPP_OPEN_BRACE;
|
|
||||||
case '}': indent_level--; return CPP_CLOSE_BRACE;
|
|
||||||
case ';': return CPP_SEMICOLON;
|
|
||||||
|
|
||||||
straychar:
|
|
||||||
default:
|
|
||||||
if (ISGRAPH (c))
|
|
||||||
error ("stray '%c' in program", c);
|
|
||||||
else
|
|
||||||
error ("stray '\\%#o' in program", c);
|
|
||||||
goto retry;
|
|
||||||
}
|
|
||||||
/* NOTREACHED */
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#define ERROR(msgid) do { error(msgid); goto syntax_error; } while(0)
|
#define ERROR(msgid) do { error(msgid); goto syntax_error; } while(0)
|
||||||
|
|
||||||
static tree
|
static tree
|
||||||
|
|
|
||||||
|
|
@ -2830,9 +2830,7 @@ end ifobjc
|
||||||
cpplib.h's token codes into yacc's token codes. */
|
cpplib.h's token codes into yacc's token codes. */
|
||||||
|
|
||||||
static enum cpp_ttype last_token;
|
static enum cpp_ttype last_token;
|
||||||
#if USE_CPPLIB
|
|
||||||
extern cpp_reader parse_in;
|
extern cpp_reader parse_in;
|
||||||
#endif
|
|
||||||
|
|
||||||
/* The reserved keyword table. */
|
/* The reserved keyword table. */
|
||||||
struct resword
|
struct resword
|
||||||
|
|
@ -3137,25 +3135,11 @@ init_parse (filename)
|
||||||
void
|
void
|
||||||
finish_parse ()
|
finish_parse ()
|
||||||
{
|
{
|
||||||
#if USE_CPPLIB
|
|
||||||
cpp_finish (&parse_in);
|
cpp_finish (&parse_in);
|
||||||
errorcount += parse_in.errors;
|
errorcount += parse_in.errors;
|
||||||
#else
|
|
||||||
fclose (finput);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#if USE_CPPLIB
|
|
||||||
#define NAME(type) cpp_type2name (type)
|
#define NAME(type) cpp_type2name (type)
|
||||||
#else
|
|
||||||
/* Bleah */
|
|
||||||
#include "symcat.h"
|
|
||||||
#define OP(e, s) s,
|
|
||||||
#define TK(e, s) STRINGX(e),
|
|
||||||
|
|
||||||
static const char *type2name[N_TTYPES] = { TTYPE_TABLE };
|
|
||||||
#define NAME(type) type2name[type]
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
yyerror (msgid)
|
yyerror (msgid)
|
||||||
|
|
@ -3248,10 +3232,8 @@ _yylex ()
|
||||||
case CPP_DOT: return '.';
|
case CPP_DOT: return '.';
|
||||||
|
|
||||||
case CPP_EOF:
|
case CPP_EOF:
|
||||||
#if USE_CPPLIB
|
|
||||||
cpp_pop_buffer (&parse_in);
|
cpp_pop_buffer (&parse_in);
|
||||||
if (! CPP_BUFFER (&parse_in))
|
if (! CPP_BUFFER (&parse_in))
|
||||||
#endif
|
|
||||||
return 0;
|
return 0;
|
||||||
goto retry;
|
goto retry;
|
||||||
|
|
||||||
|
|
|
||||||
149
gcc/c-pragma.c
149
gcc/c-pragma.c
|
|
@ -32,16 +32,7 @@ Boston, MA 02111-1307, USA. */
|
||||||
#include "c-lex.h"
|
#include "c-lex.h"
|
||||||
#include "tm_p.h"
|
#include "tm_p.h"
|
||||||
|
|
||||||
#if USE_CPPLIB
|
|
||||||
extern cpp_reader parse_in;
|
extern cpp_reader parse_in;
|
||||||
#else
|
|
||||||
struct pragma_entry;
|
|
||||||
static struct pragma_entry *pragmas;
|
|
||||||
|
|
||||||
void cpp_register_pragma PARAMS ((cpp_reader *, const char *, const char *,
|
|
||||||
void (*) PARAMS ((cpp_reader *)) ));
|
|
||||||
void cpp_register_pragma_space PARAMS ((cpp_reader *, const char *));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define BAD(msgid) do { warning (msgid); return; } while (0)
|
#define BAD(msgid) do { warning (msgid); return; } while (0)
|
||||||
#define BAD2(msgid, arg) do { warning (msgid, arg); return; } while (0)
|
#define BAD2(msgid, arg) do { warning (msgid, arg); return; } while (0)
|
||||||
|
|
@ -312,151 +303,11 @@ handle_pragma_weak (dummy)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !USE_CPPLIB
|
|
||||||
/* Glue version of cpplib's pragma registration and dispatch system. */
|
|
||||||
struct pragma_entry
|
|
||||||
{
|
|
||||||
struct pragma_entry *next;
|
|
||||||
const char *name;
|
|
||||||
size_t len;
|
|
||||||
int isnspace;
|
|
||||||
union {
|
|
||||||
void (*handler) PARAMS ((cpp_reader *));
|
|
||||||
struct pragma_entry *space;
|
|
||||||
} u;
|
|
||||||
};
|
|
||||||
|
|
||||||
void
|
|
||||||
cpp_register_pragma_space (pfile, space)
|
|
||||||
cpp_reader *pfile ATTRIBUTE_UNUSED;
|
|
||||||
const char *space;
|
|
||||||
{
|
|
||||||
struct pragma_entry *new;
|
|
||||||
const struct pragma_entry *p = pragmas;
|
|
||||||
size_t len = strlen (space);
|
|
||||||
|
|
||||||
while (p)
|
|
||||||
{
|
|
||||||
if (p->isnspace && p->len == len && !memcmp (p->name, space, len))
|
|
||||||
return;
|
|
||||||
p = p->next;
|
|
||||||
}
|
|
||||||
|
|
||||||
new = (struct pragma_entry *) xmalloc (sizeof (struct pragma_entry));
|
|
||||||
new->name = space;
|
|
||||||
new->len = len;
|
|
||||||
new->isnspace = 1;
|
|
||||||
new->u.space = 0;
|
|
||||||
|
|
||||||
new->next = pragmas;
|
|
||||||
pragmas = new;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
cpp_register_pragma (pfile, space, name, handler)
|
|
||||||
cpp_reader *pfile ATTRIBUTE_UNUSED;
|
|
||||||
const char *space;
|
|
||||||
const char *name;
|
|
||||||
void (*handler) PARAMS ((cpp_reader *));
|
|
||||||
{
|
|
||||||
struct pragma_entry **x, *new;
|
|
||||||
size_t len;
|
|
||||||
|
|
||||||
x = &pragmas;
|
|
||||||
if (space)
|
|
||||||
{
|
|
||||||
struct pragma_entry *p = pragmas;
|
|
||||||
len = strlen (space);
|
|
||||||
while (p)
|
|
||||||
{
|
|
||||||
if (p->isnspace && p->len == len && !memcmp (p->name, space, len))
|
|
||||||
{
|
|
||||||
x = &p->u.space;
|
|
||||||
goto found;
|
|
||||||
}
|
|
||||||
p = p->next;
|
|
||||||
}
|
|
||||||
abort ();
|
|
||||||
}
|
|
||||||
|
|
||||||
found:
|
|
||||||
new = (struct pragma_entry *) xmalloc (sizeof (struct pragma_entry));
|
|
||||||
new->name = name;
|
|
||||||
new->len = strlen (name);
|
|
||||||
new->isnspace = 0;
|
|
||||||
new->u.handler = handler;
|
|
||||||
|
|
||||||
new->next = *x;
|
|
||||||
*x = new;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Called from process_directive() for #pragma lines. */
|
|
||||||
void
|
|
||||||
dispatch_pragma ()
|
|
||||||
{
|
|
||||||
enum cpp_ttype t;
|
|
||||||
tree x;
|
|
||||||
const struct pragma_entry *p;
|
|
||||||
const char *name, *space = 0;
|
|
||||||
size_t len;
|
|
||||||
|
|
||||||
p = pragmas;
|
|
||||||
|
|
||||||
new_space:
|
|
||||||
t = c_lex (&x);
|
|
||||||
if (t == CPP_EOF)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (t != CPP_NAME)
|
|
||||||
{
|
|
||||||
warning ("malformed #pragma directive");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
name = IDENTIFIER_POINTER (x);
|
|
||||||
len = IDENTIFIER_LENGTH (x);
|
|
||||||
while (p)
|
|
||||||
{
|
|
||||||
if (strlen (p->name) == len && !memcmp (p->name, name, len))
|
|
||||||
{
|
|
||||||
if (p->isnspace)
|
|
||||||
{
|
|
||||||
space = p->name;
|
|
||||||
p = p->u.space;
|
|
||||||
goto new_space;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
(*p->u.handler) (0);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
p = p->next;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Issue a warning message if we have been asked to do so. Ignore
|
|
||||||
unknown pragmas in system headers unless an explicit
|
|
||||||
-Wunknown-pragmas has been given. */
|
|
||||||
if (warn_unknown_pragmas > in_system_header)
|
|
||||||
{
|
|
||||||
if (space)
|
|
||||||
warning ("ignoring #pragma %s %s", space, name);
|
|
||||||
else
|
|
||||||
warning ("ignoring #pragma %s", name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void
|
void
|
||||||
init_pragma ()
|
init_pragma ()
|
||||||
{
|
{
|
||||||
cpp_reader *pfile ATTRIBUTE_UNUSED;
|
cpp_reader *pfile ATTRIBUTE_UNUSED;
|
||||||
#if !USE_CPPLIB
|
|
||||||
pfile = 0;
|
|
||||||
#else
|
|
||||||
pfile = &parse_in;
|
pfile = &parse_in;
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef HANDLE_PRAGMA_PACK
|
#ifdef HANDLE_PRAGMA_PACK
|
||||||
cpp_register_pragma (pfile, 0, "pack", handle_pragma_pack);
|
cpp_register_pragma (pfile, 0, "pack", handle_pragma_pack);
|
||||||
|
|
|
||||||
|
|
@ -59,11 +59,6 @@ extern int add_weak PARAMS ((const char *, const char *));
|
||||||
|
|
||||||
extern void init_pragma PARAMS ((void));
|
extern void init_pragma PARAMS ((void));
|
||||||
|
|
||||||
/* If cpplib is in use, it handles dispatch. */
|
|
||||||
#if !USE_CPPLIB
|
|
||||||
extern void dispatch_pragma PARAMS ((void));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Duplicate prototypes for the register_pragma stuff and the typedef for
|
/* Duplicate prototypes for the register_pragma stuff and the typedef for
|
||||||
cpp_reader, to avoid dragging cpplib.h in almost everywhere... */
|
cpp_reader, to avoid dragging cpplib.h in almost everywhere... */
|
||||||
#ifndef __GCC_CPPLIB__
|
#ifndef __GCC_CPPLIB__
|
||||||
|
|
|
||||||
|
|
@ -308,9 +308,6 @@
|
||||||
every opportunity. This is extremely expensive. */
|
every opportunity. This is extremely expensive. */
|
||||||
#undef ENABLE_GC_ALWAYS_COLLECT
|
#undef ENABLE_GC_ALWAYS_COLLECT
|
||||||
|
|
||||||
/* Define if you want the preprocessor merged into the C and C++ compilers. */
|
|
||||||
#undef USE_CPPLIB
|
|
||||||
|
|
||||||
/* Define if you want the C and C++ compilers to support multibyte
|
/* Define if you want the C and C++ compilers to support multibyte
|
||||||
character sets for source code. */
|
character sets for source code. */
|
||||||
#undef MULTIBYTE_CHARS
|
#undef MULTIBYTE_CHARS
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -271,19 +271,7 @@ elif test x$withval != xno; then
|
||||||
cpp_install_dir=$withval
|
cpp_install_dir=$withval
|
||||||
fi])
|
fi])
|
||||||
|
|
||||||
# Link cpplib into the compiler proper, for C/C++/ObjC. Defaults to on.
|
|
||||||
maybe_cpplib=libcpp.a
|
maybe_cpplib=libcpp.a
|
||||||
AC_ARG_ENABLE(c-cpplib,
|
|
||||||
[ --enable-c-cpplib link cpplib directly into C and C++ compilers
|
|
||||||
(HIGHLY EXPERIMENTAL).],
|
|
||||||
[if test x$enable_c_cpplib != xyes; then
|
|
||||||
maybe_cpplib=
|
|
||||||
fi]
|
|
||||||
)
|
|
||||||
if test x$maybe_cpplib != x ; then
|
|
||||||
AC_DEFINE(USE_CPPLIB, 1,
|
|
||||||
[Define if you want the preprocessor merged into the C and C++ compilers.])
|
|
||||||
fi
|
|
||||||
AC_SUBST(maybe_cpplib)
|
AC_SUBST(maybe_cpplib)
|
||||||
|
|
||||||
# Enable Multibyte Characters for C/C++
|
# Enable Multibyte Characters for C/C++
|
||||||
|
|
|
||||||
|
|
@ -3214,13 +3214,9 @@ extern void unsigned_conversion_warning PARAMS ((tree, tree));
|
||||||
extern void c_apply_type_quals_to_decl PARAMS ((int, tree));
|
extern void c_apply_type_quals_to_decl PARAMS ((int, tree));
|
||||||
|
|
||||||
/* Read the rest of the current #-directive line. */
|
/* Read the rest of the current #-directive line. */
|
||||||
#if USE_CPPLIB
|
|
||||||
extern char *get_directive_line PARAMS ((void));
|
extern char *get_directive_line PARAMS ((void));
|
||||||
#define GET_DIRECTIVE_LINE() get_directive_line ()
|
#define GET_DIRECTIVE_LINE() get_directive_line ()
|
||||||
#else
|
|
||||||
extern char *get_directive_line PARAMS ((FILE *));
|
|
||||||
#define GET_DIRECTIVE_LINE() get_directive_line (finput)
|
|
||||||
#endif
|
|
||||||
/* Subroutine of build_binary_op, used for comparison operations.
|
/* Subroutine of build_binary_op, used for comparison operations.
|
||||||
See if the operands have both been converted from subword integer types
|
See if the operands have both been converted from subword integer types
|
||||||
and, if so, perhaps change them both back to their original type. */
|
and, if so, perhaps change them both back to their original type. */
|
||||||
|
|
|
||||||
|
|
@ -45,11 +45,8 @@ Boston, MA 02111-1307, USA. */
|
||||||
#include "dwarfout.h"
|
#include "dwarfout.h"
|
||||||
#include "ggc.h"
|
#include "ggc.h"
|
||||||
#include "timevar.h"
|
#include "timevar.h"
|
||||||
|
|
||||||
#if USE_CPPLIB
|
|
||||||
#include "cpplib.h"
|
#include "cpplib.h"
|
||||||
extern cpp_reader parse_in;
|
extern cpp_reader parse_in;
|
||||||
#endif
|
|
||||||
|
|
||||||
/* This structure contains information about the initializations
|
/* This structure contains information about the initializations
|
||||||
and/or destructions required for a particular priority level. */
|
and/or destructions required for a particular priority level. */
|
||||||
|
|
@ -566,20 +563,13 @@ compare_options (p1, p2)
|
||||||
|
|
||||||
int
|
int
|
||||||
lang_decode_option (argc, argv)
|
lang_decode_option (argc, argv)
|
||||||
int argc
|
int argc;
|
||||||
#if !USE_CPPLIB
|
|
||||||
ATTRIBUTE_UNUSED
|
|
||||||
#endif
|
|
||||||
;
|
|
||||||
char **argv;
|
char **argv;
|
||||||
{
|
{
|
||||||
int strings_processed;
|
int strings_processed;
|
||||||
const char *p = argv[0];
|
const char *p = argv[0];
|
||||||
#if USE_CPPLIB
|
|
||||||
strings_processed = cpp_handle_option (&parse_in, argc, argv);
|
strings_processed = cpp_handle_option (&parse_in, argc, argv);
|
||||||
#else
|
|
||||||
strings_processed = 0;
|
|
||||||
#endif /* ! USE_CPPLIB */
|
|
||||||
|
|
||||||
if (!strcmp (p, "-ftraditional") || !strcmp (p, "-traditional"))
|
if (!strcmp (p, "-ftraditional") || !strcmp (p, "-traditional"))
|
||||||
/* ignore */;
|
/* ignore */;
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,6 @@ Boston, MA 02111-1307, USA. */
|
||||||
{".c++", "@c++"},
|
{".c++", "@c++"},
|
||||||
{".C", "@c++"},
|
{".C", "@c++"},
|
||||||
{"@c++",
|
{"@c++",
|
||||||
#if USE_CPPLIB
|
|
||||||
/* cc1plus has an integrated ISO C preprocessor. We should invoke
|
/* cc1plus has an integrated ISO C preprocessor. We should invoke
|
||||||
the external preprocessor if -save-temps is given. */
|
the external preprocessor if -save-temps is given. */
|
||||||
"%{E|M|MM:cpp0 -lang-c++ %{!no-gcc:-D__GNUG__=%v1}\
|
"%{E|M|MM:cpp0 -lang-c++ %{!no-gcc:-D__GNUG__=%v1}\
|
||||||
|
|
@ -44,16 +43,7 @@ Boston, MA 02111-1307, USA. */
|
||||||
%{fnew-abi:-D__GXX_ABI_VERSION=100}\
|
%{fnew-abi:-D__GXX_ABI_VERSION=100}\
|
||||||
%{ansi:-trigraphs -$ -D__STRICT_ANSI__}\
|
%{ansi:-trigraphs -$ -D__STRICT_ANSI__}\
|
||||||
%(cc1_options) %2 %{+e*}\
|
%(cc1_options) %2 %{+e*}\
|
||||||
%{!fsyntax-only:%(invoke_as)}}}}"
|
%{!fsyntax-only:%(invoke_as)}}}}"},
|
||||||
#else /* ! USE_CPPLIB */
|
|
||||||
"cpp0 -lang-c++ %{!no-gcc:-D__GNUG__=%v1}\
|
|
||||||
%{fnew-abi:-D__GXX_ABI_VERSION=100}\
|
|
||||||
%{ansi:-trigraphs -$ -D__STRICT_ANSI__} %(cpp_options)\
|
|
||||||
%{!M:%{!MM:%{!E:%{!pipe:%g.ii} |\n\
|
|
||||||
cc1plus -lang-c++ %{!pipe:%g.ii} %(cc1_options) %2 %{+e*}\
|
|
||||||
%{!fsyntax-only:%(invoke_as)}}}}\n"
|
|
||||||
#endif /* ! USE_CPPLIB */
|
|
||||||
},
|
|
||||||
{".ii", "@c++-cpp-output"},
|
{".ii", "@c++-cpp-output"},
|
||||||
{"@c++-cpp-output",
|
{"@c++-cpp-output",
|
||||||
"%{!M:%{!MM:%{!E:\
|
"%{!M:%{!MM:%{!E:\
|
||||||
|
|
|
||||||
41
gcc/cp/lex.c
41
gcc/cp/lex.c
|
|
@ -79,13 +79,7 @@ static void init_operators PARAMS ((void));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "cpplib.h"
|
#include "cpplib.h"
|
||||||
#if USE_CPPLIB
|
|
||||||
extern cpp_reader parse_in;
|
extern cpp_reader parse_in;
|
||||||
#else
|
|
||||||
FILE *finput;
|
|
||||||
|
|
||||||
int linemode;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Pending language change.
|
/* Pending language change.
|
||||||
Positive is push count, negative is pop count. */
|
Positive is push count, negative is pop count. */
|
||||||
|
|
@ -252,10 +246,8 @@ static const char *cplus_tree_code_name[] = {
|
||||||
void
|
void
|
||||||
lang_init_options ()
|
lang_init_options ()
|
||||||
{
|
{
|
||||||
#if USE_CPPLIB
|
|
||||||
cpp_init ();
|
cpp_init ();
|
||||||
cpp_reader_init (&parse_in, CLK_GNUC89);
|
cpp_reader_init (&parse_in, CLK_GNUC89);
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Default exceptions on. */
|
/* Default exceptions on. */
|
||||||
flag_exceptions = 1;
|
flag_exceptions = 1;
|
||||||
|
|
@ -276,13 +268,6 @@ lang_init ()
|
||||||
if (flag_bounds_check < 0)
|
if (flag_bounds_check < 0)
|
||||||
flag_bounds_check = flag_bounded_pointers;
|
flag_bounds_check = flag_bounded_pointers;
|
||||||
|
|
||||||
#if !USE_CPPLIB
|
|
||||||
/* the beginning of the file is a new line; check for # */
|
|
||||||
/* With luck, we discover the real source file's name from that
|
|
||||||
and put it in input_filename. */
|
|
||||||
ungetc (check_newline (), finput);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (flag_gnu_xref) GNU_xref_begin (input_filename);
|
if (flag_gnu_xref) GNU_xref_begin (input_filename);
|
||||||
init_repo (input_filename);
|
init_repo (input_filename);
|
||||||
}
|
}
|
||||||
|
|
@ -676,21 +661,16 @@ init_reswords ()
|
||||||
static void
|
static void
|
||||||
init_cp_pragma ()
|
init_cp_pragma ()
|
||||||
{
|
{
|
||||||
#if USE_CPPLIB
|
cpp_register_pragma (&parse_in, 0, "vtable", handle_pragma_vtable);
|
||||||
#define pfile &parse_in
|
cpp_register_pragma (&parse_in, 0, "unit", handle_pragma_unit);
|
||||||
#else
|
|
||||||
#define pfile 0
|
|
||||||
#endif
|
|
||||||
cpp_register_pragma (pfile, 0, "vtable", handle_pragma_vtable);
|
|
||||||
cpp_register_pragma (pfile, 0, "unit", handle_pragma_unit);
|
|
||||||
|
|
||||||
cpp_register_pragma (pfile, 0, "interface", handle_pragma_interface);
|
cpp_register_pragma (&parse_in, 0, "interface", handle_pragma_interface);
|
||||||
cpp_register_pragma (pfile, 0, "implementation",
|
cpp_register_pragma (&parse_in, 0, "implementation",
|
||||||
handle_pragma_implementation);
|
handle_pragma_implementation);
|
||||||
|
|
||||||
cpp_register_pragma_space (pfile, "GCC");
|
cpp_register_pragma_space (&parse_in, "GCC");
|
||||||
cpp_register_pragma (pfile, "GCC", "interface", handle_pragma_interface);
|
cpp_register_pragma (&parse_in, "GCC", "interface", handle_pragma_interface);
|
||||||
cpp_register_pragma (pfile, "GCC", "implementation",
|
cpp_register_pragma (&parse_in, "GCC", "implementation",
|
||||||
handle_pragma_implementation);
|
handle_pragma_implementation);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -762,12 +742,8 @@ init_parse (filename)
|
||||||
void
|
void
|
||||||
finish_parse ()
|
finish_parse ()
|
||||||
{
|
{
|
||||||
#if USE_CPPLIB
|
|
||||||
cpp_finish (&parse_in);
|
cpp_finish (&parse_in);
|
||||||
errorcount += parse_in.errors;
|
errorcount += parse_in.errors;
|
||||||
#else
|
|
||||||
fclose (finput);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
|
|
@ -1174,12 +1150,9 @@ handle_pragma_implementation (dfile)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
main_filename = TREE_STRING_POINTER (fname);
|
main_filename = TREE_STRING_POINTER (fname);
|
||||||
#if USE_CPPLIB
|
|
||||||
|
|
||||||
if (cpp_included (&parse_in, main_filename))
|
if (cpp_included (&parse_in, main_filename))
|
||||||
warning ("#pragma implementation for %s appears after file is included",
|
warning ("#pragma implementation for %s appears after file is included",
|
||||||
main_filename);
|
main_filename);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (; ifiles; ifiles = ifiles->next)
|
for (; ifiles; ifiles = ifiles->next)
|
||||||
|
|
|
||||||
|
|
@ -70,10 +70,6 @@ typedef unsigned long RID_BIT_TYPE; /* assumed at least 32 bits */
|
||||||
used in a context which makes it a reference to a variable. */
|
used in a context which makes it a reference to a variable. */
|
||||||
extern tree lastiddecl;
|
extern tree lastiddecl;
|
||||||
|
|
||||||
#if !USE_CPPLIB
|
|
||||||
extern char *token_buffer; /* Pointer to token buffer. */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Back-door communication channel to the lexer. */
|
/* Back-door communication channel to the lexer. */
|
||||||
extern int looking_for_typename;
|
extern int looking_for_typename;
|
||||||
extern int looking_for_template;
|
extern int looking_for_template;
|
||||||
|
|
|
||||||
|
|
@ -45,9 +45,7 @@ Boston, MA 02111-1307, USA. */
|
||||||
#define SPEW_INLINE inline
|
#define SPEW_INLINE inline
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if USE_CPPLIB
|
|
||||||
extern cpp_reader parse_in;
|
extern cpp_reader parse_in;
|
||||||
#endif
|
|
||||||
|
|
||||||
/* This takes a token stream that hasn't decided much about types and
|
/* This takes a token stream that hasn't decided much about types and
|
||||||
tries to figure out as much as it can, with excessive lookahead and
|
tries to figure out as much as it can, with excessive lookahead and
|
||||||
|
|
@ -327,11 +325,9 @@ read_token (t)
|
||||||
#undef YYCODE
|
#undef YYCODE
|
||||||
|
|
||||||
case CPP_EOF:
|
case CPP_EOF:
|
||||||
#if USE_CPPLIB
|
|
||||||
cpp_pop_buffer (&parse_in);
|
cpp_pop_buffer (&parse_in);
|
||||||
if (CPP_BUFFER (&parse_in))
|
if (CPP_BUFFER (&parse_in))
|
||||||
goto retry;
|
goto retry;
|
||||||
#endif
|
|
||||||
t->yychar = 0;
|
t->yychar = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
@ -1377,17 +1373,7 @@ debug_yychar (yy)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if USE_CPPLIB
|
|
||||||
#define NAME(type) cpp_type2name (type)
|
#define NAME(type) cpp_type2name (type)
|
||||||
#else
|
|
||||||
/* Bleah */
|
|
||||||
#include "symcat.h"
|
|
||||||
#define OP(e, s) s,
|
|
||||||
#define TK(e, s) STRINGX(e),
|
|
||||||
|
|
||||||
static const char *type2name[N_TTYPES] = { TTYPE_TABLE };
|
|
||||||
#define NAME(type) type2name[type]
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void
|
void
|
||||||
yyerror (msgid)
|
yyerror (msgid)
|
||||||
|
|
|
||||||
|
|
@ -722,7 +722,6 @@ static struct compiler default_compilers[] =
|
||||||
/* Next come the entries for C. */
|
/* Next come the entries for C. */
|
||||||
{".c", "@c"},
|
{".c", "@c"},
|
||||||
{"@c",
|
{"@c",
|
||||||
#if USE_CPPLIB
|
|
||||||
/* cc1 has an integrated ISO C preprocessor. We should invoke the
|
/* cc1 has an integrated ISO C preprocessor. We should invoke the
|
||||||
external preprocessor if -save-temps or -traditional is given. */
|
external preprocessor if -save-temps or -traditional is given. */
|
||||||
"%{E|M|MM:%(trad_capable_cpp) -lang-c %{ansi:-std=c89} %(cpp_options)}\
|
"%{E|M|MM:%(trad_capable_cpp) -lang-c %{ansi:-std=c89} %(cpp_options)}\
|
||||||
|
|
@ -736,13 +735,7 @@ static struct compiler default_compilers[] =
|
||||||
cc1 -fpreprocessed %{!pipe:%g.i} %(cc1_options)}\
|
cc1 -fpreprocessed %{!pipe:%g.i} %(cc1_options)}\
|
||||||
%{!traditional:%{!ftraditional:%{!traditional-cpp:\
|
%{!traditional:%{!ftraditional:%{!traditional-cpp:\
|
||||||
cc1 -lang-c %{ansi:-std=c89} %(cpp_options) %(cc1_options)}}}}\
|
cc1 -lang-c %{ansi:-std=c89} %(cpp_options) %(cc1_options)}}}}\
|
||||||
%{!fsyntax-only:%(invoke_as)}}}}"
|
%{!fsyntax-only:%(invoke_as)}}}}"},
|
||||||
#else /* ! USE_CPPLIB */
|
|
||||||
"%(trad_capable_cpp) -lang-c %{ansi:-std=c89} %(cpp_options) \
|
|
||||||
%{!M:%{!MM:%{!E:%{!pipe:%g.i} |\n\
|
|
||||||
cc1 %{!pipe:%g.i} %(cc1_options) %{!fsyntax-only:%(invoke_as)}}}}"
|
|
||||||
#endif /* ! USE_CPPLIB */
|
|
||||||
},
|
|
||||||
{"-",
|
{"-",
|
||||||
"%{!E:%e-E required when input is from standard input}\
|
"%{!E:%e-E required when input is from standard input}\
|
||||||
%(trad_capable_cpp) -lang-c %{ansi:-std=c89} %(cpp_options)"},
|
%(trad_capable_cpp) -lang-c %{ansi:-std=c89} %(cpp_options)"},
|
||||||
|
|
|
||||||
|
|
@ -36,15 +36,6 @@ DEFINE_LANG_NAME ("Java")
|
||||||
{ "-fuse-boehm-gc", "Generate code for Boehm GC" },
|
{ "-fuse-boehm-gc", "Generate code for Boehm GC" },
|
||||||
{ "-fhash-synchronization", "Don't put synchronization structure in each object" },
|
{ "-fhash-synchronization", "Don't put synchronization structure in each object" },
|
||||||
{ "-fjni", "Assume native functions are implemented using JNI" },
|
{ "-fjni", "Assume native functions are implemented using JNI" },
|
||||||
#if ! USE_CPPLIB
|
|
||||||
{ "-MD", "Print dependencies to FILE.d" },
|
|
||||||
{ "-MMD", "Print dependencies to FILE.d" },
|
|
||||||
{ "-M", "Print dependencies to stdout" },
|
|
||||||
{ "-MM", "Print dependencies to stdout" },
|
|
||||||
{ "-MA", "Print dummy rules for included files" },
|
|
||||||
{ "-MF", "Print dependencies to FILE" },
|
|
||||||
{ "-MT", "Use TARGET as name of target in dependency file" },
|
|
||||||
#endif /* ! USE_CPPLIB */
|
|
||||||
{ "--classpath", "Set class path and suppress system path" },
|
{ "--classpath", "Set class path and suppress system path" },
|
||||||
{ "--CLASSPATH", "Set class path" },
|
{ "--CLASSPATH", "Set class path" },
|
||||||
{ "--main", "Choose class whose main method should be used" },
|
{ "--main", "Choose class whose main method should be used" },
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,6 @@ Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
{".m", "@objective-c"},
|
{".m", "@objective-c"},
|
||||||
{"@objective-c",
|
{"@objective-c",
|
||||||
#if USE_CPPLIB
|
|
||||||
/* cc1obj has an integrated ISO C preprocessor. We should invoke the
|
/* cc1obj has an integrated ISO C preprocessor. We should invoke the
|
||||||
external preprocessor if -save-temps or -traditional is given. */
|
external preprocessor if -save-temps or -traditional is given. */
|
||||||
"%{E|M|MM:%(trad_capable_cpp) -lang-objc %{ansi:-std=c89} %(cpp_options)}\
|
"%{E|M|MM:%(trad_capable_cpp) -lang-objc %{ansi:-std=c89} %(cpp_options)}\
|
||||||
|
|
@ -37,14 +36,7 @@ Boston, MA 02111-1307, USA. */
|
||||||
cc1obj -fpreprocessed %{!pipe:%g.mi} -lang-objc %(cc1_options) %{gen-decls}}\
|
cc1obj -fpreprocessed %{!pipe:%g.mi} -lang-objc %(cc1_options) %{gen-decls}}\
|
||||||
%{!traditional:%{!ftraditional:%{!traditional-cpp:\
|
%{!traditional:%{!ftraditional:%{!traditional-cpp:\
|
||||||
cc1obj -lang-objc %{ansi:-std=c89} %(cpp_options) %(cc1_options) %{gen-decls}}}}}\
|
cc1obj -lang-objc %{ansi:-std=c89} %(cpp_options) %(cc1_options) %{gen-decls}}}}}\
|
||||||
%{!fsyntax-only:%(invoke_as)}}}}"
|
%{!fsyntax-only:%(invoke_as)}}}}"},
|
||||||
#else /* ! USE_CPPLIB */
|
|
||||||
"%(trad_capable_cpp) -lang-objc %{ansi:-std=c89} %(cpp_options)\
|
|
||||||
%{!M:%{!MM:%{!E:%{!pipe:%g.mi} |\n\
|
|
||||||
cc1obj -lang-objc %{!pipe:%g.mi} %(cc1_options) %{gen-decls}\
|
|
||||||
%{!fsyntax-only:%(invoke_as)}}}}\n"
|
|
||||||
#endif /* ! USE_CPPLIB */
|
|
||||||
},
|
|
||||||
{".mi", "@objc-cpp-output"},
|
{".mi", "@objc-cpp-output"},
|
||||||
{"@objc-cpp-output",
|
{"@objc-cpp-output",
|
||||||
"%{!M:%{!MM:%{!E:cc1obj -lang-objc %i %(cc1_options) %{gen-decls}\
|
"%{!M:%{!MM:%{!E:cc1obj -lang-objc %i %(cc1_options) %{gen-decls}\
|
||||||
|
|
|
||||||
|
|
@ -55,11 +55,8 @@ Boston, MA 02111-1307, USA. */
|
||||||
#include "output.h"
|
#include "output.h"
|
||||||
#include "toplev.h"
|
#include "toplev.h"
|
||||||
#include "ggc.h"
|
#include "ggc.h"
|
||||||
|
|
||||||
#if USE_CPPLIB
|
|
||||||
#include "cpplib.h"
|
#include "cpplib.h"
|
||||||
extern cpp_reader parse_in;
|
extern cpp_reader parse_in;
|
||||||
#endif
|
|
||||||
|
|
||||||
/* This is the default way of generating a method name. */
|
/* This is the default way of generating a method name. */
|
||||||
/* I am not sure it is really correct.
|
/* I am not sure it is really correct.
|
||||||
|
|
@ -698,21 +695,13 @@ generate_struct_by_value_array ()
|
||||||
void
|
void
|
||||||
lang_init_options ()
|
lang_init_options ()
|
||||||
{
|
{
|
||||||
#if USE_CPPLIB
|
|
||||||
cpp_init ();
|
cpp_init ();
|
||||||
cpp_reader_init (&parse_in, CLK_GNUC89);
|
cpp_reader_init (&parse_in, CLK_GNUC89);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
lang_init ()
|
lang_init ()
|
||||||
{
|
{
|
||||||
#if !USE_CPPLIB
|
|
||||||
/* The beginning of the file is a new line; check for #.
|
|
||||||
With luck, we discover the real source file's name from that
|
|
||||||
and put it in input_filename. */
|
|
||||||
ungetc (check_newline (), finput);
|
|
||||||
#endif
|
|
||||||
/* Force the line number back to 0; check_newline will have
|
/* Force the line number back to 0; check_newline will have
|
||||||
raised it to 1, which will make the builtin functions appear
|
raised it to 1, which will make the builtin functions appear
|
||||||
not to be built in. */
|
not to be built in. */
|
||||||
|
|
|
||||||
|
|
@ -3781,10 +3781,6 @@ display_help ()
|
||||||
unsigned long i;
|
unsigned long i;
|
||||||
const char *lang;
|
const char *lang;
|
||||||
|
|
||||||
#ifndef USE_CPPLIB
|
|
||||||
printf (_("Usage: %s input [switches]\n"), progname);
|
|
||||||
printf (_("Switches:\n"));
|
|
||||||
#endif
|
|
||||||
printf (_(" -ffixed-<register> Mark <register> as being unavailable to the compiler\n"));
|
printf (_(" -ffixed-<register> Mark <register> as being unavailable to the compiler\n"));
|
||||||
printf (_(" -fcall-used-<register> Mark <register> as being corrupted by function calls\n"));
|
printf (_(" -fcall-used-<register> Mark <register> as being corrupted by function calls\n"));
|
||||||
printf (_(" -fcall-saved-<register> Mark <register> as being preserved across functions\n"));
|
printf (_(" -fcall-saved-<register> Mark <register> as being preserved across functions\n"));
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue