diff options
author | brolley <brolley@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-12-07 14:57:30 +0000 |
---|---|---|
committer | brolley <brolley@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-12-07 14:57:30 +0000 |
commit | ae667da334303392d2c8d91c718d973752677de6 (patch) | |
tree | b4caf25320b0e53c6673cf24365c3f744631bb63 /gcc/cccp.c | |
parent | 5a9d893105afee655fb9f0fdd551d4b2b096100b (diff) | |
download | ppe42-gcc-ae667da334303392d2c8d91c718d973752677de6.tar.gz ppe42-gcc-ae667da334303392d2c8d91c718d973752677de6.zip |
Mon Dec 7 17:55:06 1998 Mike Stump <mrs@wrs.com>
* cccp.c (ignore_escape_flag): Add support for \ as `natural'
characters in file names in #line to be consistent with #include
handling. We support escape prcessing in the # 1 "..." version of
the command. See also support in cp/lex.c.
(handle_directive): Likewise.
(do_line): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@24156 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cccp.c')
-rw-r--r-- | gcc/cccp.c | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/gcc/cccp.c b/gcc/cccp.c index f09709dc94c..34b9d46f839 100644 --- a/gcc/cccp.c +++ b/gcc/cccp.c @@ -868,6 +868,10 @@ static int errors = 0; /* Error counter for exit code */ /* Name of output file, for error messages. */ static char *out_fname; +/* Nonzero to ignore \ in string constants. Use to treat #line 1 "A:\file.h + as a non-form feed. If you want it to be a form feed, you must use + # 1 "\f". */ +static int ignore_escape_flag = 1; /* Stack of conditionals currently in progress (including both successful and failing conditionals). */ @@ -3806,6 +3810,8 @@ handle_directive (ip, op) /* Record where the directive started. do_xifdef needs this. */ directive_start = bp - 1; + ignore_escape_flag = 1; + /* Skip whitespace and \-newline. */ while (1) { if (is_hor_space[*bp]) { @@ -3868,6 +3874,7 @@ handle_directive (ip, op) pedwarn ("`#' followed by integer"); after_ident = ident; kt = line_directive_table; + ignore_escape_flag = 0; goto old_linenum; } @@ -6940,15 +6947,16 @@ do_line (buf, limit, op, keyword) return 0; case '\\': - { - char *bpc = (char *) bp; - HOST_WIDE_INT c = parse_escape (&bpc, (HOST_WIDE_INT) (U_CHAR) (-1)); - bp = (U_CHAR *) bpc; - if (c < 0) - p--; - else - p[-1] = c; - } + if (! ignore_escape_flag) + { + char *bpc = (char *) bp; + HOST_WIDE_INT c = parse_escape (&bpc, (HOST_WIDE_INT) (U_CHAR) (-1)); + bp = (U_CHAR *) bpc; + if (c < 0) + p--; + else + p[-1] = c; + } break; case '\"': |