diff options
author | Neil Booth <neil@daikokuya.co.uk> | 2002-07-09 22:21:37 +0000 |
---|---|---|
committer | Neil Booth <neil@gcc.gnu.org> | 2002-07-09 22:21:37 +0000 |
commit | cd98faa13814ce3712fc1c1be9690180d89810e5 (patch) | |
tree | e390f035173a9fd06a813df8aaf84b4cafa2f92f /gcc/cpptrad.c | |
parent | 2ad65b0e91312a9f2fadd4abd9eb9d98b085920c (diff) | |
download | gcc-cd98faa13814ce3712fc1c1be9690180d89810e5.zip gcc-cd98faa13814ce3712fc1c1be9690180d89810e5.tar.gz gcc-cd98faa13814ce3712fc1c1be9690180d89810e5.tar.bz2 |
cpperror.c (cpp_error): Default to directive_line within directives here.
* cpperror.c (cpp_error): Default to directive_line within
directives here.
* cppexp.c (cpp_interpret_integer): Only use traditional
number semantics in directives.
* cpplib.c (prepare_directive_trad): Don't reset pfile->line.
(do_include_common): Similarly.
* cpptrad.c (scan_out_logical_line): Implement accurate
quoting of <> in #include.
* doc/cpp.texi: Update.
From-SVN: r55347
Diffstat (limited to 'gcc/cpptrad.c')
-rw-r--r-- | gcc/cpptrad.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/gcc/cpptrad.c b/gcc/cpptrad.c index 915dceb..5063065 100644 --- a/gcc/cpptrad.c +++ b/gcc/cpptrad.c @@ -437,11 +437,13 @@ scan_out_logical_line (pfile, macro) struct fun_macro fmacro; unsigned int c, paren_depth = 0, quote; enum ls lex_state = ls_none; + bool header_ok; fmacro.buff = NULL; start_logical_line: quote = 0; + header_ok = pfile->state.angled_headers; CUR (pfile->context) = pfile->buffer->cur; RLIMIT (pfile->context) = pfile->buffer->rlimit; pfile->out.cur = pfile->out.base; @@ -500,15 +502,12 @@ scan_out_logical_line (pfile, macro) goto done; case '<': - if (pfile->state.angled_headers && !quote) + if (header_ok) quote = '>'; break; case '>': if (c == quote) - { - pfile->state.angled_headers = false; - quote = 0; - } + quote = 0; break; case '"': @@ -736,7 +735,9 @@ scan_out_logical_line (pfile, macro) break; } - /* Non-whitespace disables MI optimization. */ + /* Non-whitespace disables MI optimization and stops treating + '<' as a quote in #include. */ + header_ok = false; if (!pfile->state.in_directive) pfile->mi_valid = false; |