mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-07 04:26:52 +08:00
cpphash.h (_cpp_set_trad_context): Remove.
* cpphash.h (_cpp_set_trad_context): Remove. * cpplib.c (prepare_directive_trad): Do nothing for #define. (cpp_push_buffer, _cpp_pop_buffer): Don't call _cpp_set_trad_context. * cpptrad.c: Update comments. (_cpp_read_logical_line_trad): Let scan_logical_line handle updating the current context. (scan_logical_line): Update the current context. (_cpp_create_trad_definition): Similarly. (_cpp_set_trad_context): Remove. From-SVN: r55022
This commit is contained in:
parent
0647023885
commit
951a076609
@ -1,3 +1,15 @@
|
||||
2002-06-27 Neil Booth <neil@daikokuya.co.uk>
|
||||
|
||||
* cpphash.h (_cpp_set_trad_context): Remove.
|
||||
* cpplib.c (prepare_directive_trad): Do nothing for #define.
|
||||
(cpp_push_buffer, _cpp_pop_buffer): Don't call _cpp_set_trad_context.
|
||||
* cpptrad.c: Update comments.
|
||||
(_cpp_read_logical_line_trad): Let scan_logical_line handle
|
||||
updating the current context.
|
||||
(scan_logical_line): Update the current context.
|
||||
(_cpp_create_trad_definition): Similarly.
|
||||
(_cpp_set_trad_context): Remove.
|
||||
|
||||
2002-06-27 Neil Booth <neil@daikokuya.co.uk>
|
||||
|
||||
PR preprocessor/7070
|
||||
|
@ -529,7 +529,6 @@ extern bool _cpp_read_logical_line_trad PARAMS ((cpp_reader *));
|
||||
extern void _cpp_overlay_buffer PARAMS ((cpp_reader *pfile, const uchar *,
|
||||
size_t));
|
||||
extern void _cpp_remove_overlay PARAMS ((cpp_reader *));
|
||||
extern void _cpp_set_trad_context PARAMS ((cpp_reader *));
|
||||
extern bool _cpp_create_trad_definition PARAMS ((cpp_reader *, cpp_macro *));
|
||||
extern bool _cpp_expansions_different_trad PARAMS ((const cpp_macro *,
|
||||
const cpp_macro *));
|
||||
|
10
gcc/cpplib.c
10
gcc/cpplib.c
@ -284,9 +284,7 @@ static void
|
||||
prepare_directive_trad (pfile)
|
||||
cpp_reader *pfile;
|
||||
{
|
||||
if (pfile->directive == &dtable[T_DEFINE])
|
||||
CUR (pfile->context) = pfile->buffer->cur;
|
||||
else
|
||||
if (pfile->directive != &dtable[T_DEFINE])
|
||||
{
|
||||
bool no_expand = (pfile->directive
|
||||
&& ! (pfile->directive->flags & EXPAND));
|
||||
@ -1937,9 +1935,6 @@ cpp_push_buffer (pfile, buffer, len, from_stage3, return_at_eof)
|
||||
|
||||
pfile->buffer = new;
|
||||
|
||||
if (CPP_OPTION (pfile, traditional))
|
||||
_cpp_set_trad_context (pfile);
|
||||
|
||||
return new;
|
||||
}
|
||||
|
||||
@ -1984,9 +1979,6 @@ _cpp_pop_buffer (pfile)
|
||||
_cpp_maybe_push_include_file (pfile);
|
||||
}
|
||||
}
|
||||
|
||||
if (pfile->buffer && CPP_OPTION (pfile, traditional))
|
||||
_cpp_set_trad_context (pfile);
|
||||
}
|
||||
|
||||
/* Enter all recognised directives in the hash table. */
|
||||
|
@ -23,12 +23,12 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* The replacement text of a function-like macro is stored as a
|
||||
contiguous sequence of aligned blocks, each representing the text
|
||||
between subsequent parameters in that text.
|
||||
between subsequent parameters.
|
||||
|
||||
Each block comprises the length of text contained therein, the
|
||||
one-based index of the argument that immediately follows that text,
|
||||
and the text itself. The final block in the macro expansion is
|
||||
easily recognizable as it has an argument index of zero. */
|
||||
Each block comprises the text between its surrounding parameters,
|
||||
the length of that text, and the one-based index of the following
|
||||
parameter. The final block in the replacement text is easily
|
||||
recognizable as it has an argument index of zero. */
|
||||
|
||||
struct block
|
||||
{
|
||||
@ -139,9 +139,9 @@ handle_newline (pfile, cur)
|
||||
return cur + 1;
|
||||
}
|
||||
|
||||
/* CUR points to any character in the buffer, not necessarily a
|
||||
backslash. Advances CUR until all escaped newlines are skipped,
|
||||
and returns the new position.
|
||||
/* CUR points to any character in the current context, not necessarily
|
||||
a backslash. Advances CUR until all escaped newlines are skipped,
|
||||
and returns the new position without updating the context.
|
||||
|
||||
Warns if a file buffer ends in an escaped newline. */
|
||||
static const uchar *
|
||||
@ -160,9 +160,9 @@ skip_escaped_newlines (pfile, cur)
|
||||
return cur;
|
||||
}
|
||||
|
||||
/* CUR points to the asterisk introducing a comment in the input
|
||||
buffer. IN_DEFINE is true if we are in the replacement text
|
||||
of a macro.
|
||||
/* CUR points to the asterisk introducing a comment in the current
|
||||
context. IN_DEFINE is true if we are in the replacement text of a
|
||||
macro.
|
||||
|
||||
The asterisk and following comment is copied to the buffer pointed
|
||||
to by pfile->out.cur, which must be of sufficient size.
|
||||
@ -364,31 +364,24 @@ bool
|
||||
_cpp_read_logical_line_trad (pfile)
|
||||
cpp_reader *pfile;
|
||||
{
|
||||
cpp_buffer *buffer = pfile->buffer;
|
||||
|
||||
do
|
||||
{
|
||||
if (buffer->cur == buffer->rlimit)
|
||||
if (pfile->buffer->cur == pfile->buffer->rlimit)
|
||||
{
|
||||
bool stop = true;
|
||||
|
||||
/* Don't pop the last buffer. */
|
||||
if (buffer->prev)
|
||||
if (pfile->buffer->prev)
|
||||
{
|
||||
stop = buffer->return_at_eof;
|
||||
stop = pfile->buffer->return_at_eof;
|
||||
_cpp_pop_buffer (pfile);
|
||||
buffer = pfile->buffer;
|
||||
}
|
||||
|
||||
if (stop)
|
||||
return false;
|
||||
}
|
||||
|
||||
CUR (pfile->context) = buffer->cur;
|
||||
RLIMIT (pfile->context) = buffer->rlimit;
|
||||
scan_out_logical_line (pfile, NULL);
|
||||
buffer = pfile->buffer;
|
||||
buffer->cur = CUR (pfile->context);
|
||||
}
|
||||
while (pfile->state.skipping);
|
||||
|
||||
@ -426,9 +419,9 @@ save_argument (macro, offset)
|
||||
macro->args[macro->argc] = offset;
|
||||
}
|
||||
|
||||
/* Copies the next logical line in the current buffer to the output
|
||||
buffer. The output is guaranteed to terminate with a NUL
|
||||
character.
|
||||
/* Copies the next logical line in the current buffer (starting at
|
||||
buffer->cur) to the output buffer. The output is guaranteed to
|
||||
terminate with a NUL character. buffer->cur is updated.
|
||||
|
||||
If MACRO is non-NULL, then we are scanning the replacement list of
|
||||
MACRO, and we call save_replacement_text() every time we meet an
|
||||
@ -448,6 +441,8 @@ scan_out_logical_line (pfile, macro)
|
||||
fmacro.buff = NULL;
|
||||
|
||||
start_logical_line:
|
||||
CUR (pfile->context) = pfile->buffer->cur;
|
||||
RLIMIT (pfile->context) = pfile->buffer->rlimit;
|
||||
pfile->out.cur = pfile->out.base;
|
||||
pfile->out.first_line = pfile->line;
|
||||
new_context:
|
||||
@ -721,6 +716,8 @@ scan_out_logical_line (pfile, macro)
|
||||
preprocessor lex the next token. */
|
||||
pfile->buffer->cur = cur;
|
||||
_cpp_handle_directive (pfile, false /* indented */);
|
||||
/* #include changes pfile->buffer so we need to
|
||||
update the limits of the current context. */
|
||||
goto start_logical_line;
|
||||
}
|
||||
}
|
||||
@ -759,7 +756,7 @@ scan_out_logical_line (pfile, macro)
|
||||
|
||||
done:
|
||||
out[-1] = '\0';
|
||||
CUR (context) = cur;
|
||||
pfile->buffer->cur = cur;
|
||||
pfile->out.cur = out - 1;
|
||||
if (fmacro.buff)
|
||||
_cpp_release_buff (pfile, fmacro.buff);
|
||||
@ -1072,11 +1069,17 @@ _cpp_create_trad_definition (pfile, macro)
|
||||
{
|
||||
const uchar *cur;
|
||||
uchar *limit;
|
||||
cpp_context *context = pfile->context;
|
||||
|
||||
CUR (pfile->context) = pfile->buffer->cur;
|
||||
/* The context has not been set up for command line defines, and CUR
|
||||
has not been updated for the macro name for in-file defines. */
|
||||
pfile->out.cur = pfile->out.base;
|
||||
CUR (context) = pfile->buffer->cur;
|
||||
RLIMIT (context) = pfile->buffer->rlimit;
|
||||
check_output_buffer (pfile, RLIMIT (context) - CUR (context));
|
||||
|
||||
/* Is this a function-like macro? */
|
||||
if (* CUR (pfile->context) == '(')
|
||||
if (* CUR (context) == '(')
|
||||
{
|
||||
/* Setting macro to NULL indicates an error occurred, and
|
||||
prevents unnecessary work in scan_out_logical_line. */
|
||||
@ -1092,8 +1095,8 @@ _cpp_create_trad_definition (pfile, macro)
|
||||
}
|
||||
|
||||
/* Skip leading whitespace in the replacement text. */
|
||||
CUR (pfile->context)
|
||||
= skip_whitespace (pfile, CUR (pfile->context),
|
||||
pfile->buffer->cur
|
||||
= skip_whitespace (pfile, CUR (context),
|
||||
CPP_OPTION (pfile, discard_comments_in_macro_exp));
|
||||
|
||||
pfile->state.prevent_expansion++;
|
||||
@ -1202,20 +1205,3 @@ _cpp_expansions_different_trad (macro1, macro2)
|
||||
free (p1);
|
||||
return mismatch;
|
||||
}
|
||||
|
||||
/* Prepare to be able to scan the current buffer. */
|
||||
void
|
||||
_cpp_set_trad_context (pfile)
|
||||
cpp_reader *pfile;
|
||||
{
|
||||
cpp_buffer *buffer = pfile->buffer;
|
||||
cpp_context *context = pfile->context;
|
||||
|
||||
if (pfile->context->prev)
|
||||
abort ();
|
||||
|
||||
pfile->out.cur = pfile->out.base;
|
||||
CUR (context) = buffer->cur;
|
||||
RLIMIT (context) = buffer->rlimit;
|
||||
check_output_buffer (pfile, RLIMIT (context) - CUR (context));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user