mirror of
https://github.com/pret/agbcc.git
synced 2026-07-15 07:31:01 -05:00
remove standalone preprocessor
This commit is contained in:
parent
ef3a179666
commit
09f3893dbd
10905
gcc/ChangeLog
10905
gcc/ChangeLog
File diff suppressed because it is too large
Load Diff
13017
gcc/ChangeLog.0
13017
gcc/ChangeLog.0
File diff suppressed because it is too large
Load Diff
3393
gcc/ChangeLog.Cygnus
3393
gcc/ChangeLog.Cygnus
File diff suppressed because it is too large
Load Diff
3781
gcc/ChangeLog.lib
3781
gcc/ChangeLog.lib
File diff suppressed because it is too large
Load Diff
1503
gcc/FSFChangeLog
1503
gcc/FSFChangeLog
File diff suppressed because it is too large
Load Diff
10110
gcc/FSFChangeLog.10
10110
gcc/FSFChangeLog.10
File diff suppressed because it is too large
Load Diff
14493
gcc/FSFChangeLog.11
14493
gcc/FSFChangeLog.11
File diff suppressed because it is too large
Load Diff
1244
gcc/FSFChangeLog.12
1244
gcc/FSFChangeLog.12
File diff suppressed because it is too large
Load Diff
|
|
@ -43,67 +43,6 @@ static int deserves_ellipsis PROTO((tree));
|
|||
static char *gen_formal_list_for_func_def PROTO((tree, formals_style));
|
||||
static char *gen_type PROTO((char *, tree, formals_style));
|
||||
static char *gen_decl PROTO((tree, int, formals_style));
|
||||
|
||||
/* Concatenate a sequence of strings, returning the result.
|
||||
|
||||
This function is based on the one in libiberty. */
|
||||
|
||||
/* This definition will conflict with the one from prefix.c in
|
||||
libcpp.a when linking cc1 and cc1obj. So only provide it if we are
|
||||
not using libcpp.a */
|
||||
#ifndef USE_CPPLIB
|
||||
char *
|
||||
concat VPROTO((const char *first, ...))
|
||||
{
|
||||
register int length;
|
||||
register char *newstr;
|
||||
register char *end;
|
||||
register const char *arg;
|
||||
va_list args;
|
||||
#ifndef ANSI_PROTOTYPES
|
||||
const char *first;
|
||||
#endif
|
||||
|
||||
/* First compute the size of the result and get sufficient memory. */
|
||||
|
||||
VA_START (args, first);
|
||||
#ifndef ANSI_PROTOTYPES
|
||||
first = va_arg (args, const char *);
|
||||
#endif
|
||||
|
||||
arg = first;
|
||||
length = 0;
|
||||
|
||||
while (arg != 0)
|
||||
{
|
||||
length += strlen (arg);
|
||||
arg = va_arg (args, const char *);
|
||||
}
|
||||
|
||||
newstr = (char *) malloc (length + 1);
|
||||
va_end (args);
|
||||
|
||||
/* Now copy the individual pieces to the result string. */
|
||||
|
||||
VA_START (args, first);
|
||||
#ifndef ANSI_PROTOTYPES
|
||||
first = va_arg (args, char *);
|
||||
#endif
|
||||
|
||||
end = newstr;
|
||||
arg = first;
|
||||
while (arg != 0)
|
||||
{
|
||||
while (*arg)
|
||||
*end++ = *arg++;
|
||||
arg = va_arg (args, const char *);
|
||||
}
|
||||
*end = '\000';
|
||||
va_end (args);
|
||||
|
||||
return (newstr);
|
||||
}
|
||||
#endif /* ! USE_CPPLIB */
|
||||
|
||||
/* Given a string representing an entire type or an entire declaration
|
||||
which only lacks the actual "data-type" specifier (at its left end),
|
||||
|
|
|
|||
|
|
@ -30,12 +30,10 @@ Boston, MA 02111-1307, USA. */
|
|||
#include "c-pragma.h"
|
||||
#include "rtl.h"
|
||||
|
||||
#if USE_CPPLIB
|
||||
#include "cpplib.h"
|
||||
cpp_reader parse_in;
|
||||
cpp_options parse_options;
|
||||
static enum cpp_token cpp_token;
|
||||
#endif
|
||||
|
||||
#ifndef WCHAR_TYPE_SIZE
|
||||
#ifdef INT_TYPE_SIZE
|
||||
|
|
@ -2781,7 +2779,6 @@ truthvalue_conversion (expr)
|
|||
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.
|
||||
|
|
@ -2886,90 +2883,6 @@ get_directive_line ()
|
|||
char_escaped = (c == '\\' && ! char_escaped);
|
||||
}
|
||||
}
|
||||
#else
|
||||
/* 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
|
||||
down to the element type of an array. */
|
||||
|
|
|
|||
|
|
@ -35,10 +35,8 @@ Boston, MA 02111-1307, USA. */
|
|||
#include "c-lex.h"
|
||||
#include "toplev.h"
|
||||
|
||||
#if USE_CPPLIB
|
||||
#include "cpplib.h"
|
||||
extern cpp_reader parse_in;
|
||||
#endif
|
||||
|
||||
/* In grokdeclarator, distinguish syntactic contexts of declarators. */
|
||||
enum decl_context
|
||||
|
|
@ -608,11 +606,7 @@ c_decode_option (argc, argv)
|
|||
{
|
||||
int strings_processed;
|
||||
char *p = argv[0];
|
||||
#if USE_CPPLIB
|
||||
strings_processed = cpp_handle_option (&parse_in, argc, argv);
|
||||
#else
|
||||
strings_processed = 0;
|
||||
#endif /* ! USE_CPPLIB */
|
||||
|
||||
if (!strcmp (p, "-ftraditional") || !strcmp (p, "-traditional"))
|
||||
{
|
||||
|
|
|
|||
69
gcc/c-lex.c
69
gcc/c-lex.c
|
|
@ -38,14 +38,9 @@ Boston, MA 02111-1307, USA. */
|
|||
#include <locale.h>
|
||||
#endif /* MULTIBYTE_CHARS */
|
||||
|
||||
#if USE_CPPLIB
|
||||
#include "cpplib.h"
|
||||
extern cpp_reader parse_in;
|
||||
extern cpp_options parse_options;
|
||||
#else
|
||||
/* Stream for reading from the input file. */
|
||||
FILE *finput;
|
||||
#endif
|
||||
|
||||
extern void yyprint PROTO((FILE *, int, YYSTYPE));
|
||||
|
||||
|
|
@ -57,17 +52,12 @@ tree ridpointers[(int) RID_MAX];
|
|||
/* Cause the `yydebug' variable to be defined. */
|
||||
#define YYDEBUG 1
|
||||
|
||||
#if USE_CPPLIB
|
||||
extern unsigned char *yy_cur, *yy_lim;
|
||||
|
||||
extern int yy_get_token ();
|
||||
|
||||
#define GETC() (yy_cur < yy_lim ? *yy_cur++ : yy_get_token ())
|
||||
#define UNGETC(c) ((void)(c), yy_cur--)
|
||||
#else
|
||||
#define GETC() getc (finput)
|
||||
#define UNGETC(c) ungetc (c, finput)
|
||||
#endif
|
||||
|
||||
/* the declaration found for the last IDENTIFIER token read in.
|
||||
yylex must look this up to detect typedefs, which get token type TYPENAME,
|
||||
|
|
@ -100,10 +90,6 @@ static int indent_level = 0; /* Number of { minus number of }. */
|
|||
/* Nonzero if end-of-file has been seen on input. */
|
||||
static int end_of_file;
|
||||
|
||||
#if !USE_CPPLIB
|
||||
/* Buffered-back input character; faster than using ungetc. */
|
||||
static int nextchar = -1;
|
||||
#endif
|
||||
|
||||
#ifdef HANDLE_GENERIC_PRAGMAS
|
||||
static int handle_generic_pragma PROTO((int));
|
||||
|
|
@ -169,22 +155,6 @@ char *
|
|||
init_parse (filename)
|
||||
char *filename;
|
||||
{
|
||||
#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.show_column = 1;
|
||||
if (! cpp_start_read (&parse_in, filename))
|
||||
abort ();
|
||||
|
|
@ -196,7 +166,6 @@ init_parse (filename)
|
|||
token buffer. We must arrange to read it out here. */
|
||||
yy_cur = parse_in.token_buffer;
|
||||
yy_lim = CPP_PWRITTEN (&parse_in);
|
||||
#endif
|
||||
|
||||
init_lex ();
|
||||
|
||||
|
|
@ -206,11 +175,7 @@ init_parse (filename)
|
|||
void
|
||||
finish_parse ()
|
||||
{
|
||||
#if USE_CPPLIB
|
||||
cpp_finish (&parse_in);
|
||||
#else
|
||||
fclose (finput);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -422,11 +387,6 @@ position_after_white_space ()
|
|||
{
|
||||
register int c;
|
||||
|
||||
#if !USE_CPPLIB
|
||||
if (nextchar != -1)
|
||||
c = nextchar, nextchar = -1;
|
||||
else
|
||||
#endif
|
||||
c = GETC();
|
||||
|
||||
UNGETC (skip_white_space (c));
|
||||
|
|
@ -560,13 +520,6 @@ check_newline ()
|
|||
/* We invoke HANDLE_PRAGMA before HANDLE_GENERIC_PRAGMAS (if
|
||||
both are defined), in order to give the back end a chance to
|
||||
override the interpretation of generic style pragmas. */
|
||||
#if !USE_CPPLIB
|
||||
if (nextchar >= 0)
|
||||
{
|
||||
c = nextchar, nextchar = -1;
|
||||
UNGETC (c);
|
||||
}
|
||||
#endif /* !USE_CPPLIB */
|
||||
|
||||
if (TREE_CODE (yylval.ttype) != IDENTIFIER_NODE)
|
||||
goto skipline;
|
||||
|
|
@ -837,10 +790,6 @@ linenum:
|
|||
|
||||
/* skip the rest of this line. */
|
||||
skipline:
|
||||
#if !USE_CPPLIB
|
||||
if (c != '\n' && c != EOF && nextchar >= 0)
|
||||
c = nextchar, nextchar = -1;
|
||||
#endif
|
||||
while (c != '\n' && c != EOF)
|
||||
c = GETC();
|
||||
return c;
|
||||
|
|
@ -874,11 +823,6 @@ handle_generic_pragma (token)
|
|||
default:
|
||||
handle_pragma_token (token_buffer, NULL);
|
||||
}
|
||||
#if !USE_CPPLIB
|
||||
if (nextchar >= 0)
|
||||
c = nextchar, nextchar = -1;
|
||||
else
|
||||
#endif
|
||||
c = GETC ();
|
||||
|
||||
while (c == ' ' || c == '\t')
|
||||
|
|
@ -1090,11 +1034,6 @@ yylex ()
|
|||
register int value;
|
||||
int wide_flag = 0;
|
||||
|
||||
#if !USE_CPPLIB
|
||||
if (nextchar >= 0)
|
||||
c = nextchar, nextchar = -1;
|
||||
else
|
||||
#endif
|
||||
c = GETC();
|
||||
|
||||
/* Effectively do c = skip_white_space (c)
|
||||
|
|
@ -1192,11 +1131,7 @@ yylex ()
|
|||
}
|
||||
|
||||
*p = 0;
|
||||
#if USE_CPPLIB
|
||||
UNGETC (c);
|
||||
#else
|
||||
nextchar = c;
|
||||
#endif
|
||||
|
||||
value = IDENTIFIER;
|
||||
yylval.itype = 0;
|
||||
|
|
@ -2253,9 +2188,5 @@ void
|
|||
set_yydebug (value)
|
||||
int value;
|
||||
{
|
||||
#if YYDEBUG != 0
|
||||
yydebug = value;
|
||||
#else
|
||||
warning ("YYDEBUG not defined.");
|
||||
#endif
|
||||
}
|
||||
|
|
|
|||
|
|
@ -187,13 +187,8 @@ extern tree convert_and_check PROTO((tree, tree));
|
|||
extern void overflow_warning PROTO((tree));
|
||||
extern void unsigned_conversion_warning PROTO((tree, tree));
|
||||
/* Read the rest of the current #-directive line. */
|
||||
#if USE_CPPLIB
|
||||
extern char *get_directive_line PROTO((void));
|
||||
#define GET_DIRECTIVE_LINE() get_directive_line ()
|
||||
#else
|
||||
extern char *get_directive_line PROTO((FILE *));
|
||||
#define GET_DIRECTIVE_LINE() get_directive_line (finput)
|
||||
#endif
|
||||
|
||||
/* Subroutine of build_binary_op, used for comparison operations.
|
||||
See if the operands have both been converted from subword integer types
|
||||
|
|
|
|||
674
gcc/cccp.1
674
gcc/cccp.1
|
|
@ -1,674 +0,0 @@
|
|||
.\" Copyright (c) 1991, 1992, 1993 Free Software Foundation \-*-Text-*-
|
||||
.\" See section COPYING for conditions for redistribution
|
||||
.TH cpp 1 "30apr1993" "GNU Tools" "GNU Tools"
|
||||
.SH NAME
|
||||
cccp, cpp \- The GNU C-Compatible Compiler Preprocessor.
|
||||
.SH SYNOPSIS
|
||||
.hy 0
|
||||
.na
|
||||
.TP
|
||||
.B cccp
|
||||
.RB "[\|" \-$ "\|]"
|
||||
.RB "[\|" \-A \c
|
||||
.I predicate\c
|
||||
.RB [ (\c
|
||||
.I value\c
|
||||
.BR ) ]\|]
|
||||
.RB "[\|" \-C "\|]"
|
||||
.RB "[\|" \-D \c
|
||||
.I name\c
|
||||
.RB [ =\c
|
||||
.I definition\c
|
||||
\&]\|]
|
||||
.RB "[\|" \-dD "\|]"
|
||||
.RB "[\|" \-dM "\|]"
|
||||
.RB "[\|" "\-I\ "\c
|
||||
.I directory\c
|
||||
\&\|]
|
||||
.RB "[\|" \-H "\|]"
|
||||
.RB "[\|" \-I\- "\|]"
|
||||
.RB "[\|" "\-imacros\ "\c
|
||||
.I file\c
|
||||
\&\|]
|
||||
.RB "[\|" "\-include\ "\c
|
||||
.I file\c
|
||||
\&\|]
|
||||
.RB "[\|" "\-idirafter\ "\c
|
||||
.I dir\c
|
||||
\&\|]
|
||||
.RB "[\|" "\-iprefix\ "\c
|
||||
.I prefix\c
|
||||
\&\|]
|
||||
.RB "[\|" "\-iwithprefix\ "\c
|
||||
.I dir\c
|
||||
\&\|]
|
||||
.RB "[\|" \-lang\-c "\|]"
|
||||
.RB "[\|" \-lang\-c++ "\|]"
|
||||
.RB "[\|" \-lang\-objc "\|]"
|
||||
.RB "[\|" \-lang\-objc++ "\|]"
|
||||
.RB "[\|" \-lint "\|]"
|
||||
.RB "[\|" \-M\ [ \-MG "\|]]"
|
||||
.RB "[\|" \-MM\ [ \-MG "\|]]"
|
||||
.RB "[\|" \-MD\ \c
|
||||
.I file\ \c
|
||||
\&\|]
|
||||
.RB "[\|" \-MMD\ \c
|
||||
.I file\ \c
|
||||
\&\|]
|
||||
.RB "[\|" \-nostdinc "\|]"
|
||||
.RB "[\|" \-nostdinc++ "\|]"
|
||||
.RB "[\|" \-P "\|]"
|
||||
.RB "[\|" \-pedantic "\|]"
|
||||
.RB "[\|" \-pedantic\-errors "\|]"
|
||||
.RB "[\|" \-traditional "\|]"
|
||||
.RB "[\|" \-trigraphs "\|]"
|
||||
.RB "[\|" \-U \c
|
||||
.I name\c
|
||||
\&\|]
|
||||
.RB "[\|" \-undef "\|]"
|
||||
.RB "[\|" \-Wtrigraphs "\|]"
|
||||
.RB "[\|" \-Wcomment "\|]"
|
||||
.RB "[\|" \-Wall "\|]"
|
||||
.RB "[\|" \-Wtraditional "\|]"
|
||||
.br
|
||||
.RB "[\|" \c
|
||||
.I infile\c
|
||||
.RB | \- "\|]"
|
||||
.RB "[\|" \c
|
||||
.I outfile\c
|
||||
.RB | \- "\|]"
|
||||
.ad b
|
||||
.hy 1
|
||||
.SH DESCRIPTION
|
||||
The C preprocessor is a \c
|
||||
.I macro processor\c
|
||||
\& that is used automatically by
|
||||
the C compiler to transform your program before actual compilation. It is
|
||||
called a macro processor because it allows you to define \c
|
||||
.I macros\c
|
||||
\&,
|
||||
which are brief abbreviations for longer constructs.
|
||||
|
||||
The C preprocessor provides four separate facilities that you can use as
|
||||
you see fit:
|
||||
.TP
|
||||
\(bu
|
||||
Inclusion of header files. These are files of declarations that can be
|
||||
substituted into your program.
|
||||
.TP
|
||||
\(bu
|
||||
Macro expansion. You can define \c
|
||||
.I macros\c
|
||||
\&, which are abbreviations
|
||||
for arbitrary fragments of C code, and then the C preprocessor will
|
||||
replace the macros with their definitions throughout the program.
|
||||
.TP
|
||||
\(bu
|
||||
Conditional compilation. Using special preprocessing directives, you
|
||||
can include or exclude parts of the program according to various
|
||||
conditions.
|
||||
.TP
|
||||
\(bu
|
||||
Line control. If you use a program to combine or rearrange source files into
|
||||
an intermediate file which is then compiled, you can use line control
|
||||
to inform the compiler of where each source line originally came from.
|
||||
.PP
|
||||
C preprocessors vary in some details. For a full explanation of the
|
||||
GNU C preprocessor, see the
|
||||
.B info
|
||||
file `\|\c
|
||||
.B cpp.info\c
|
||||
\&\|', or the manual
|
||||
.I The C Preprocessor\c
|
||||
\&. Both of these are built from the same documentation source file, `\|\c
|
||||
.B cpp.texinfo\c
|
||||
\&\|'. The GNU C
|
||||
preprocessor provides a superset of the features of ANSI Standard C.
|
||||
|
||||
ANSI Standard C requires the rejection of many harmless constructs commonly
|
||||
used by today's C programs. Such incompatibility would be inconvenient for
|
||||
users, so the GNU C preprocessor is configured to accept these constructs
|
||||
by default. Strictly speaking, to get ANSI Standard C, you must use the
|
||||
options `\|\c
|
||||
.B \-trigraphs\c
|
||||
\&\|', `\|\c
|
||||
.B \-undef\c
|
||||
\&\|' and `\|\c
|
||||
.B \-pedantic\c
|
||||
\&\|', but in
|
||||
practice the consequences of having strict ANSI Standard C make it
|
||||
undesirable to do this.
|
||||
|
||||
Most often when you use the C preprocessor you will not have to invoke it
|
||||
explicitly: the C compiler will do so automatically. However, the
|
||||
preprocessor is sometimes useful individually.
|
||||
|
||||
When you call the preprocessor individually, either name
|
||||
(\c
|
||||
.B cpp\c
|
||||
\& or \c
|
||||
.B cccp\c
|
||||
\&) will do\(em\&they are completely synonymous.
|
||||
|
||||
The C preprocessor expects two file names as arguments, \c
|
||||
.I infile\c
|
||||
\& and
|
||||
\c
|
||||
.I outfile\c
|
||||
\&. The preprocessor reads \c
|
||||
.I infile\c
|
||||
\& together with any other
|
||||
files it specifies with `\|\c
|
||||
.B #include\c
|
||||
\&\|'. All the output generated by the
|
||||
combined input files is written in \c
|
||||
.I outfile\c
|
||||
\&.
|
||||
|
||||
Either \c
|
||||
.I infile\c
|
||||
\& or \c
|
||||
.I outfile\c
|
||||
\& may be `\|\c
|
||||
.B \-\c
|
||||
\&\|', which as \c
|
||||
.I infile\c
|
||||
\&
|
||||
means to read from standard input and as \c
|
||||
.I outfile\c
|
||||
\& means to write to
|
||||
standard output. Also, if \c
|
||||
.I outfile\c
|
||||
\& or both file names are omitted,
|
||||
the standard output and standard input are used for the omitted file names.
|
||||
.SH OPTIONS
|
||||
Here is a table of command options accepted by the C preprocessor.
|
||||
These options can also be given when compiling a C program; they are
|
||||
passed along automatically to the preprocessor when it is invoked by
|
||||
the compiler.
|
||||
.TP
|
||||
.B \-P
|
||||
Inhibit generation of `\|\c
|
||||
.B #\c
|
||||
\&\|'-lines with line-number information in
|
||||
the output from the preprocessor. This might be
|
||||
useful when running the preprocessor on something that is not C code
|
||||
and will be sent to a program which might be confused by the
|
||||
`\|\c
|
||||
.B #\c
|
||||
\&\|'-lines.
|
||||
.TP
|
||||
.B \-C
|
||||
Do not discard comments: pass them through to the output file.
|
||||
Comments appearing in arguments of a macro call will be copied to the
|
||||
output before the expansion of the macro call.
|
||||
.TP
|
||||
.B \-traditional
|
||||
Try to imitate the behavior of old-fashioned C, as opposed to ANSI C.
|
||||
.TP
|
||||
.B \-trigraphs
|
||||
Process ANSI standard trigraph sequences. These are three-character
|
||||
sequences, all starting with `\|\c
|
||||
.B ??\c
|
||||
\&\|', that are defined by ANSI C to
|
||||
stand for single characters. For example, `\|\c
|
||||
.B ??/\c
|
||||
\&\|' stands for
|
||||
`\|\c
|
||||
.BR "\e" "\|',"
|
||||
so `\|\c
|
||||
.B '??/n'\c
|
||||
\&\|' is a character constant for a newline.
|
||||
Strictly speaking, the GNU C preprocessor does not support all
|
||||
programs in ANSI Standard C unless `\|\c
|
||||
.B \-trigraphs\c
|
||||
\&\|' is used, but if
|
||||
you ever notice the difference it will be with relief.
|
||||
|
||||
You don't want to know any more about trigraphs.
|
||||
.TP
|
||||
.B \-pedantic
|
||||
Issue warnings required by the ANSI C standard in certain cases such
|
||||
as when text other than a comment follows `\|\c
|
||||
.B #else\c
|
||||
\&\|' or `\|\c
|
||||
.B #endif\c
|
||||
\&\|'.
|
||||
.TP
|
||||
.B \-pedantic\-errors
|
||||
Like `\|\c
|
||||
.B \-pedantic\c
|
||||
\&\|', except that errors are produced rather than
|
||||
warnings.
|
||||
.TP
|
||||
.B \-Wtrigraphs
|
||||
Warn if any trigraphs are encountered (assuming they are enabled).
|
||||
.TP
|
||||
.B \-Wcomment
|
||||
.TP
|
||||
.B \-Wcomments
|
||||
Warn whenever a comment-start sequence `\|\c
|
||||
.B /*\c
|
||||
\&\|' appears in a comment.
|
||||
(Both forms have the same effect).
|
||||
.TP
|
||||
.B \-Wall
|
||||
Requests both `\|\c
|
||||
.B \-Wtrigraphs\c
|
||||
\&\|' and `\|\c
|
||||
.B \-Wcomment\c
|
||||
\&\|' (but not
|
||||
`\|\c
|
||||
.B \-Wtraditional\c
|
||||
\&\|').
|
||||
.TP
|
||||
.B \-Wtraditional
|
||||
Warn about certain constructs that behave differently in traditional and
|
||||
ANSI C.
|
||||
.TP
|
||||
.BI "\-I " directory\c
|
||||
\&
|
||||
Add the directory \c
|
||||
.I directory\c
|
||||
\& to the end of the list of
|
||||
directories to be searched for header files.
|
||||
This can be used to override a system header file, substituting your
|
||||
own version, since these directories are searched before the system
|
||||
header file directories. If you use more than one `\|\c
|
||||
.B \-I\c
|
||||
\&\|' option,
|
||||
the directories are scanned in left-to-right order; the standard
|
||||
system directories come after.
|
||||
.TP
|
||||
.B \-I\-
|
||||
Any directories specified with `\|\c
|
||||
.B \-I\c
|
||||
\&\|' options before the `\|\c
|
||||
.B \-I\-\c
|
||||
\&\|'
|
||||
option are searched only for the case of `\|\c
|
||||
.B #include "\c
|
||||
.I file\c
|
||||
\&"\c
|
||||
\&\|';
|
||||
they are not searched for `\|\c
|
||||
.B #include <\c
|
||||
.I file\c
|
||||
\&>\c
|
||||
\&\|'.
|
||||
|
||||
If additional directories are specified with `\|\c
|
||||
.B \-I\c
|
||||
\&\|' options after
|
||||
the `\|\c
|
||||
.B \-I\-\c
|
||||
\&\|', these directories are searched for all `\|\c
|
||||
.B #include\c
|
||||
\&\|'
|
||||
directives.
|
||||
|
||||
In addition, the `\|\c
|
||||
.B \-I\-\c
|
||||
\&\|' option inhibits the use of the current
|
||||
directory as the first search directory for `\|\c
|
||||
.B #include "\c
|
||||
.I file\c
|
||||
\&"\c
|
||||
\&\|'.
|
||||
Therefore, the current directory is searched only if it is requested
|
||||
explicitly with `\|\c
|
||||
.B \-I.\c
|
||||
\&\|'. Specifying both `\|\c
|
||||
.B \-I\-\c
|
||||
\&\|' and `\|\c
|
||||
.B \-I.\c
|
||||
\&\|'
|
||||
allows you to control precisely which directories are searched before
|
||||
the current one and which are searched after.
|
||||
.TP
|
||||
.B \-nostdinc
|
||||
Do not search the standard system directories for header files.
|
||||
Only the directories you have specified with `\|\c
|
||||
.B \-I\c
|
||||
\&\|' options
|
||||
(and the current directory, if appropriate) are searched.
|
||||
.TP
|
||||
.B \-nostdinc++
|
||||
Do not search for header files in the C++ specific standard
|
||||
directories, but do still search the other standard directories.
|
||||
(This option is used when building libg++.)
|
||||
.TP
|
||||
.BI "\-D " "name"\c
|
||||
\&
|
||||
Predefine \c
|
||||
.I name\c
|
||||
\& as a macro, with definition `\|\c
|
||||
.B 1\c
|
||||
\&\|'.
|
||||
.TP
|
||||
.BI "\-D " "name" = definition
|
||||
\&
|
||||
Predefine \c
|
||||
.I name\c
|
||||
\& as a macro, with definition \c
|
||||
.I definition\c
|
||||
\&.
|
||||
There are no restrictions on the contents of \c
|
||||
.I definition\c
|
||||
\&, but if
|
||||
you are invoking the preprocessor from a shell or shell-like program
|
||||
you may need to use the shell's quoting syntax to protect characters
|
||||
such as spaces that have a meaning in the shell syntax. If you use more than
|
||||
one `\|\c
|
||||
.B \-D\c
|
||||
\&\|' for the same
|
||||
.I name\c
|
||||
\&, the rightmost definition takes effect.
|
||||
.TP
|
||||
.BI "\-U " "name"\c
|
||||
\&
|
||||
Do not predefine \c
|
||||
.I name\c
|
||||
\&. If both `\|\c
|
||||
.B \-U\c
|
||||
\&\|' and `\|\c
|
||||
.B \-D\c
|
||||
\&\|' are
|
||||
specified for one name, the `\|\c
|
||||
.B \-U\c
|
||||
\&\|' beats the `\|\c
|
||||
.B \-D\c
|
||||
\&\|' and the name
|
||||
is not predefined.
|
||||
.TP
|
||||
.B \-undef
|
||||
Do not predefine any nonstandard macros.
|
||||
.TP
|
||||
.BI "\-A " "name(" value )
|
||||
Assert (in the same way as the \c
|
||||
.B #assert\c
|
||||
\& directive)
|
||||
the predicate \c
|
||||
.I name\c
|
||||
\& with tokenlist \c
|
||||
.I value\c
|
||||
\&. Remember to escape or quote the parentheses on
|
||||
shell command lines.
|
||||
|
||||
You can use `\|\c
|
||||
.B \-A-\c
|
||||
\&\|' to disable all predefined assertions; it also
|
||||
undefines all predefined macros.
|
||||
.TP
|
||||
.B \-dM
|
||||
Instead of outputting the result of preprocessing, output a list of
|
||||
`\|\c
|
||||
.B #define\c
|
||||
\&\|' directives for all the macros defined during the
|
||||
execution of the preprocessor, including predefined macros. This gives
|
||||
you a way of finding out what is predefined in your version of the
|
||||
preprocessor; assuming you have no file `\|\c
|
||||
.B foo.h\c
|
||||
\&\|', the command
|
||||
.sp
|
||||
.br
|
||||
touch\ foo.h;\ cpp\ \-dM\ foo.h
|
||||
.br
|
||||
.sp
|
||||
will show the values of any predefined macros.
|
||||
.TP
|
||||
.B \-dD
|
||||
Like `\|\c
|
||||
.B \-dM\c
|
||||
\&\|' except in two respects: it does \c
|
||||
.I not\c
|
||||
\& include the
|
||||
predefined macros, and it outputs \c
|
||||
.I both\c
|
||||
\& the `\|\c
|
||||
.B #define\c
|
||||
\&\|'
|
||||
directives and the result of preprocessing. Both kinds of output go to
|
||||
the standard output file.
|
||||
.PP
|
||||
.TP
|
||||
.BR \-M\ [ \-MG ]
|
||||
Instead of outputting the result of preprocessing, output a rule
|
||||
suitable for \c
|
||||
.B make\c
|
||||
\& describing the dependencies of the main
|
||||
source file. The preprocessor outputs one \c
|
||||
.B make\c
|
||||
\& rule containing
|
||||
the object file name for that source file, a colon, and the names of
|
||||
all the included files. If there are many included files then the
|
||||
rule is split into several lines using `\|\c
|
||||
.B \\\\\c
|
||||
\&\|'-newline.
|
||||
|
||||
`\|\c
|
||||
.B \-MG\c
|
||||
\&\|' says to treat missing header files as generated files and assume \c
|
||||
they live in the same directory as the source file. It must be specified \c
|
||||
in addition to `\|\c
|
||||
.B \-M\c
|
||||
\&\|'.
|
||||
|
||||
This feature is used in automatic updating of makefiles.
|
||||
.TP
|
||||
.BR \-MM\ [ \-MG ]
|
||||
Like `\|\c
|
||||
.B \-M\c
|
||||
\&\|' but mention only the files included with `\|\c
|
||||
.B #include
|
||||
"\c
|
||||
.I file\c
|
||||
\&"\c
|
||||
\&\|'. System header files included with `\|\c
|
||||
.B #include
|
||||
<\c
|
||||
.I file\c
|
||||
\&>\c
|
||||
\&\|' are omitted.
|
||||
.TP
|
||||
.BI \-MD\ file
|
||||
Like `\|\c
|
||||
.B \-M\c
|
||||
\&\|' but the dependency information is written to `\|\c
|
||||
.I file\c
|
||||
\&\|'. This is in addition to compiling the file as
|
||||
specified\(em\&`\|\c
|
||||
.B \-MD\c
|
||||
\&\|' does not inhibit ordinary compilation the way
|
||||
`\|\c
|
||||
.B \-M\c
|
||||
\&\|' does.
|
||||
|
||||
When invoking gcc, do not specify the `\|\c
|
||||
.I file\c
|
||||
\&\|' argument. Gcc will create file names made by replacing `\|\c
|
||||
.B .c\c
|
||||
\&\|' with `\|\c
|
||||
.B .d\c
|
||||
\&\|' at the end of the input file names.
|
||||
|
||||
In Mach, you can use the utility \c
|
||||
.B md\c
|
||||
\& to merge multiple files
|
||||
into a single dependency file suitable for using with the `\|\c
|
||||
.B make\c
|
||||
\&\|'
|
||||
command.
|
||||
.TP
|
||||
.BI \-MMD\ file
|
||||
Like `\|\c
|
||||
.B \-MD\c
|
||||
\&\|' except mention only user header files, not system
|
||||
header files.
|
||||
.TP
|
||||
.B \-H
|
||||
Print the name of each header file used, in addition to other normal
|
||||
activities.
|
||||
.TP
|
||||
.BI "\-imacros " "file"\c
|
||||
\&
|
||||
Process \c
|
||||
.I file\c
|
||||
\& as input, discarding the resulting output, before
|
||||
processing the regular input file. Because the output generated from
|
||||
\c
|
||||
.I file\c
|
||||
\& is discarded, the only effect of `\|\c
|
||||
.B \-imacros \c
|
||||
.I file\c
|
||||
\&\c
|
||||
\&\|' is to
|
||||
make the macros defined in \c
|
||||
.I file\c
|
||||
\& available for use in the main
|
||||
input. The preprocessor evaluates any `\|\c
|
||||
.B \-D\c
|
||||
\&\|' and `\|\c
|
||||
.B \-U\c
|
||||
\&\|' options
|
||||
on the command line before processing `\|\c
|
||||
.B \-imacros \c
|
||||
.I file\c
|
||||
\&\|' \c
|
||||
\&.
|
||||
.TP
|
||||
.BI "\-include " "file"
|
||||
Process
|
||||
.I file
|
||||
as input, and include all the resulting output,
|
||||
before processing the regular input file.
|
||||
.TP
|
||||
.BI "-idirafter " "dir"\c
|
||||
\&
|
||||
Add the directory \c
|
||||
.I dir\c
|
||||
\& to the second include path. The directories
|
||||
on the second include path are searched when a header file is not found
|
||||
in any of the directories in the main include path (the one that
|
||||
`\|\c
|
||||
.B \-I\c
|
||||
\&\|' adds to).
|
||||
.TP
|
||||
.BI "-iprefix " "prefix"\c
|
||||
\&
|
||||
Specify \c
|
||||
.I prefix\c
|
||||
\& as the prefix for subsequent `\|\c
|
||||
.B \-iwithprefix\c
|
||||
\&\|'
|
||||
options.
|
||||
.TP
|
||||
.BI "-iwithprefix " "dir"\c
|
||||
\&
|
||||
Add a directory to the second include path. The directory's name is
|
||||
made by concatenating \c
|
||||
.I prefix\c
|
||||
\& and \c
|
||||
.I dir\c
|
||||
\&, where \c
|
||||
.I prefix\c
|
||||
\&
|
||||
was specified previously with `\|\c
|
||||
.B \-iprefix\c
|
||||
\&\|'.
|
||||
.TP
|
||||
.B \-lang-c
|
||||
.TP
|
||||
.B \-lang-c++
|
||||
.TP
|
||||
.B \-lang-objc
|
||||
.TP
|
||||
.B \-lang-objc++
|
||||
Specify the source language. `\|\c
|
||||
.B \-lang-c++\c
|
||||
\&\|' makes the preprocessor
|
||||
handle C++ comment syntax, and includes extra default include
|
||||
directories for C++, and `\|\c
|
||||
.B \-lang-objc\c
|
||||
\&\|' enables the Objective C
|
||||
`\|\c
|
||||
.B #import\c
|
||||
\&\|' directive. `\|\c
|
||||
.B \-lang-c\c
|
||||
\&\|' explicitly turns off both of
|
||||
these extensions, and `\|\c
|
||||
.B \-lang-objc++\c
|
||||
\&\|' enables both.
|
||||
|
||||
These options are generated by the compiler driver \c
|
||||
.B gcc\c
|
||||
\&, but not
|
||||
passed from the `\|\c
|
||||
.B gcc\c
|
||||
\&\|' command line.
|
||||
.TP
|
||||
.B \-lint
|
||||
Look for commands to the program checker \c
|
||||
.B lint\c
|
||||
\& embedded in
|
||||
comments, and emit them preceded by `\|\c
|
||||
.B #pragma lint\c
|
||||
\&\|'. For example,
|
||||
the comment `\|\c
|
||||
.B /* NOTREACHED */\c
|
||||
\&\|' becomes `\|\c
|
||||
.B #pragma lint
|
||||
NOTREACHED\c
|
||||
\&\|'.
|
||||
|
||||
This option is available only when you call \c
|
||||
.B cpp\c
|
||||
\& directly;
|
||||
\c
|
||||
.B gcc\c
|
||||
\& will not pass it from its command line.
|
||||
.TP
|
||||
.B \-$
|
||||
Forbid the use of `\|\c
|
||||
.B $\c
|
||||
\&\|' in identifiers. This was formerly required for strict conformance
|
||||
to the C Standard before the standard was corrected. \c
|
||||
|
||||
This option is available only when you call \c
|
||||
.B cpp\c
|
||||
\& directly;
|
||||
.B gcc\c
|
||||
\& will not pass it from its command line.
|
||||
.SH "SEE ALSO"
|
||||
.RB "`\|" Cpp "\|'"
|
||||
entry in
|
||||
.B info\c
|
||||
\&;
|
||||
.I The C Preprocessor\c
|
||||
, Richard M. Stallman.
|
||||
.br
|
||||
.BR gcc "(" 1 ");"
|
||||
.RB "`\|" Gcc "\|'"
|
||||
entry in
|
||||
.B info\c
|
||||
\&;
|
||||
.I
|
||||
Using and Porting GNU CC (for version 2.0)\c
|
||||
, Richard M. Stallman.
|
||||
.SH COPYING
|
||||
Copyright (c) 1991, 1992, 1993 Free Software Foundation, Inc.
|
||||
.PP
|
||||
Permission is granted to make and distribute verbatim copies of
|
||||
this manual provided the copyright notice and this permission notice
|
||||
are preserved on all copies.
|
||||
.PP
|
||||
Permission is granted to copy and distribute modified versions of this
|
||||
manual under the conditions for verbatim copying, provided that the
|
||||
entire resulting derived work is distributed under the terms of a
|
||||
permission notice identical to this one.
|
||||
.PP
|
||||
Permission is granted to copy and distribute translations of this
|
||||
manual into another language, under the above conditions for modified
|
||||
versions, except that this permission notice may be included in
|
||||
translations approved by the Free Software Foundation instead of in
|
||||
the original English.
|
||||
10833
gcc/cccp.c
10833
gcc/cccp.c
File diff suppressed because it is too large
Load Diff
1248
gcc/cexp.y
1248
gcc/cexp.y
File diff suppressed because it is too large
Load Diff
59
gcc/gcc.c
59
gcc/gcc.c
|
|
@ -587,7 +587,6 @@ static struct compiler default_compilers[] =
|
|||
{".c", {"@c"}},
|
||||
{"@c",
|
||||
{
|
||||
#if USE_CPPLIB
|
||||
"%{E|M|MM:cpp -lang-c %{ansi:-std=c89} %{std*} %{nostdinc*}\
|
||||
%{C} %{v} %{A*} %{I*} %{P} %I\
|
||||
%{C:%{!E:%eGNU C does not support -C without using -E}}\
|
||||
|
|
@ -651,53 +650,6 @@ static struct compiler default_compilers[] =
|
|||
#endif
|
||||
/* END CYGNUS LOCAL */
|
||||
}},
|
||||
#else /* ! USE_CPPLIB */
|
||||
"cpp -lang-c %{ansi:-std=c89} %{std*} %{nostdinc*}\
|
||||
%{C} %{v} %{A*} %{I*} %{P} %I\
|
||||
%{C:%{!E:%eGNU C does not support -C without using -E}}\
|
||||
%{M} %{MM} %{MD:-MD %b.d} %{MMD:-MMD %b.d} %{MG}\
|
||||
-undef -D__GNUC__=%v1 -D__GNUC_MINOR__=%v2\
|
||||
%{ansi|std=*:%{!std=gnu*:-trigraphs -D__STRICT_ANSI__}}\
|
||||
%{!undef:%{!ansi:%{!std=*:%p}%{std=gnu*:%p}} %P} %{trigraphs}\
|
||||
%c %{Os:-D__OPTIMIZE_SIZE__} %{O*:%{!O0:-D__OPTIMIZE__}}\
|
||||
%{traditional} %{ftraditional:-traditional}\
|
||||
%{traditional-cpp:-traditional}\
|
||||
%{fleading-underscore} %{fno-leading-underscore}\
|
||||
%{g*} %{W*} %{w} %{pedantic*} %{H} %{d*} %C %{D*} %{U*} %{i*} %Z\
|
||||
%i %{!M:%{!MM:%{!E:%{!pipe:%g.i}}}}%{E:%W{o*}}%{M:%W{o*}}%{MM:%W{o*}} |\n",
|
||||
/* CYGNUS LOCAL v850/law & --help/nickc */
|
||||
#if 1
|
||||
"%{!M:%{!MM:%{!E:cc1 %{!pipe:%g.i} %1 \
|
||||
%{!Q:-quiet} -dumpbase %b.c %{d*} %{m*} %{a*}\
|
||||
%{g*} %{O*} %{W*} %{w} %{pedantic*} %{ansi} \
|
||||
%{traditional} %{v:-version} %{pg:-p} %{p} %{f*}\
|
||||
%{aux-info*}\
|
||||
%{attr-info*}\
|
||||
%{--help:--help} \
|
||||
%{offset-info*}\
|
||||
%{pg:%{fomit-frame-pointer:%e-pg and -fomit-frame-pointer are incompatible}}\
|
||||
%{S:%W{o*}%{!o*:-o %b.s}}%{!S:-o %{|!pipe:%g.s}} |\n\
|
||||
%{!S:as %a %Y\
|
||||
%{c:%W{o*}%{!o*:-o %w%b%O}}%{!c:-o %d%w%u%O}\
|
||||
%{!pipe:%g.s} %A\n }}}}"
|
||||
#else
|
||||
/* END CYGNUS LOCAL */
|
||||
"%{!M:%{!MM:%{!E:cc1 %{!pipe:%g.i} %1 \
|
||||
%{!Q:-quiet} -dumpbase %b.c %{d*} %{m*} %{a*}\
|
||||
%{g*} %{O*} %{W*} %{w} %{pedantic*} %{std*}\
|
||||
%{traditional} %{v:-version} %{pg:-p} %{p} %{f*}\
|
||||
%{aux-info*}\
|
||||
%{--help:--help} \
|
||||
%{pg:%{fomit-frame-pointer:%e-pg and -fomit-frame-pointer are incompatible}}\
|
||||
%{S:%W{o*}%{!o*:-o %b.s}}%{!S:-o %{|!pipe:%g.s}} |\n\
|
||||
%{!S:as %a %Y\
|
||||
%{c:%W{o*}%{!o*:-o %w%b%O}}%{!c:-o %d%w%u%O}\
|
||||
%{!pipe:%g.s} %A\n }}}}"
|
||||
/* CYGNUS LOCAL v850/law */
|
||||
#endif
|
||||
/* END CYGNUS LOCAL */
|
||||
}},
|
||||
#endif /* ! USE_CPPLIB */
|
||||
{"-",
|
||||
{"%{E:cpp -lang-c %{ansi:-std=c89} %{std*} %{nostdinc*}\
|
||||
%{C} %{v} %{A*} %{I*} %{P} %I\
|
||||
|
|
@ -5574,16 +5526,7 @@ lookup_compiler (name, length, language)
|
|||
(!strcmp (cp->suffix, "-") && !strcmp (name, "-"))
|
||||
|| (strlen (cp->suffix) < length
|
||||
/* See if the suffix matches the end of NAME. */
|
||||
#ifdef OS2
|
||||
&& ((!strcmp (cp->suffix,
|
||||
name + length - strlen (cp->suffix))
|
||||
|| !strpbrk (cp->suffix, "ABCDEFGHIJKLMNOPQRSTUVWXYZ"))
|
||||
&& !strcasecmp (cp->suffix,
|
||||
name + length - strlen (cp->suffix)))
|
||||
#else
|
||||
&& !strcmp (cp->suffix,
|
||||
name + length - strlen (cp->suffix))
|
||||
#endif
|
||||
&& !strcmp (cp->suffix, name + length - strlen (cp->suffix))
|
||||
))
|
||||
{
|
||||
if (cp->spec[0][0] == '@')
|
||||
|
|
|
|||
10
gcc/toplev.c
10
gcc/toplev.c
|
|
@ -2654,12 +2654,8 @@ compile_file (name)
|
|||
input_file_stack->name = input_filename;
|
||||
|
||||
/* This may set main_input_filename. */
|
||||
#if !USE_CPPLIB
|
||||
ungetc (check_newline (), finput);
|
||||
#else
|
||||
check_newline ();
|
||||
yy_cur--;
|
||||
#endif
|
||||
|
||||
/* If the input doesn't start with a #line, use the input name
|
||||
as the official input file name. */
|
||||
|
|
@ -4011,10 +4007,6 @@ display_help ()
|
|||
unsigned long i;
|
||||
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 (" -fcall-used-<register> Mark <register> as being corrupted by function calls\n");
|
||||
printf (" -fcall-saved-<register> Mark <register> as being preserved across functions\n");
|
||||
|
|
@ -4303,9 +4295,7 @@ main (argc, argv)
|
|||
flag_short_enums = DEFAULT_SHORT_ENUMS;
|
||||
#endif
|
||||
|
||||
#if USE_CPPLIB
|
||||
cpplib_init();
|
||||
#endif
|
||||
|
||||
/* Scan to see what optimization level has been specified. That will
|
||||
determine the default value of many flags. */
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user