Commit dd2cc6dc by Nathanael Nerode

cpptrad.c (_cpp_scan_out_logical_line): Improve test for whether directive…

cpptrad.c (_cpp_scan_out_logical_line): Improve test for whether directive begins at the beginning of a line.

	* cpptrad.c (_cpp_scan_out_logical_line): Improve test for
	whether directive begins at the beginning of a line.

	(testsuite)
	* gcc.dg/cpp/trad/xwin1.c: New test case.

From-SVN: r73740
parent 09c55720
2003-11-19 Nathanael Nerode <neroden@gcc.gnu.org>
* cpptrad.c (_cpp_scan_out_logical_line): Improve test for
whether directive begins at the beginning of a line.
2003-11-19 Richard Sandiford <rsandifo@redhat.com>
* config/frv/frv.c (frv_init_libfuncs): Correct ufix_optab entries.
......
......@@ -350,6 +350,7 @@ _cpp_scan_out_logical_line (cpp_reader *pfile, cpp_macro *macro)
unsigned int c, paren_depth = 0, quote;
enum ls lex_state = ls_none;
bool header_ok;
const uchar *start_of_input_line;
fmacro.buff = NULL;
......@@ -359,6 +360,9 @@ _cpp_scan_out_logical_line (cpp_reader *pfile, cpp_macro *macro)
RLIMIT (pfile->context) = pfile->buffer->rlimit;
pfile->out.cur = pfile->out.base;
pfile->out.first_line = pfile->line;
/* start_of_input_line is needed to make sure that directives really,
really start at the first character of the line. */
start_of_input_line = pfile->buffer->cur;
new_context:
context = pfile->context;
cur = CUR (context);
......@@ -581,7 +585,7 @@ _cpp_scan_out_logical_line (cpp_reader *pfile, cpp_macro *macro)
break;
case '#':
if (out - 1 == pfile->out.base
if (cur - 1 == start_of_input_line
/* A '#' from a macro doesn't start a directive. */
&& !pfile->context->prev
&& !pfile->state.in_directive)
......
2003-11-19 Nathanael Nerode <neroden@gcc.gnu.org>
* gcc.dg/cpp/trad/xwin1.c: New test case.
2003-11-19 Andreas Tobler <a.tobler@schweiz.ch>
* g++.dg/compat/compat.exp: Add DYLD_LIBRARY_PATH for darwin.
......
/* XWindows (as of 4.3) does some pretty strange things with cpp.
This tests one of them; the leading comments are supposed to be
eaten by the preprocessor; but the 'directives' after them are
supposed to be retained as text, not processed, so that imake's cpp
can be run on the output!
{ dg-do preprocess }
*/
/**/#if 0
passed
/**/#endif
/* { dg-final { scan-file xwin1.i "(^|\n)#if 0" } } */
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