Commit a4b1e653 by Neil Booth Committed by Neil Booth

re PR preprocessor/8497 (traditional preprocessor #if/#endif bug)

	PR preprocessor/8497
	PR preprocessor/8501
	* cpptrad.c (scan_out_logical_line): A '#' from a macro doesn't
	start a directive.  In assembler, #NUM is not a line directive.

From-SVN: r58938
parent e6e8c772
2002-11-08 Neil Booth <neil@daikokuya.co.uk> 2002-11-08 Neil Booth <neil@daikokuya.co.uk>
PR preprocessor/8497
PR preprocessor/8501
* cpptrad.c (scan_out_logical_line): A '#' from a macro doesn't
start a directive. In assembler, #NUM is not a line directive.
2002-11-08 Neil Booth <neil@daikokuya.co.uk>
* cppmain.c (cpp_preprocess_file): Loop to pop any -included * cppmain.c (cpp_preprocess_file): Loop to pop any -included
buffers. buffers.
......
...@@ -682,7 +682,10 @@ scan_out_logical_line (pfile, macro) ...@@ -682,7 +682,10 @@ scan_out_logical_line (pfile, macro)
break; break;
case '#': case '#':
if (out - 1 == pfile->out.base && !pfile->state.in_directive) if (out - 1 == pfile->out.base
/* A '#' from a macro doesn't start a directive. */
&& !pfile->context->prev
&& !pfile->state.in_directive)
{ {
/* A directive. With the way _cpp_handle_directive /* A directive. With the way _cpp_handle_directive
currently works, we only want to call it if either we currently works, we only want to call it if either we
...@@ -705,7 +708,8 @@ scan_out_logical_line (pfile, macro) ...@@ -705,7 +708,8 @@ scan_out_logical_line (pfile, macro)
{ {
bool do_it = false; bool do_it = false;
if (is_numstart (*cur)) if (is_numstart (*cur)
&& CPP_OPTION (pfile, lang) != CLK_ASM)
do_it = true; do_it = true;
else if (is_idstart (*cur)) else if (is_idstart (*cur))
/* Check whether we know this directive, but don't /* Check whether we know this directive, but don't
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment