aboutsummaryrefslogtreecommitdiff
path: root/gcc/cpptrad.c
diff options
context:
space:
mode:
authorNeil Booth <neil@daikokuya.co.uk>2002-07-09 22:21:37 +0000
committerNeil Booth <neil@gcc.gnu.org>2002-07-09 22:21:37 +0000
commitcd98faa13814ce3712fc1c1be9690180d89810e5 (patch)
treee390f035173a9fd06a813df8aaf84b4cafa2f92f /gcc/cpptrad.c
parent2ad65b0e91312a9f2fadd4abd9eb9d98b085920c (diff)
downloadgcc-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.c13
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;