summaryrefslogtreecommitdiffstats
path: root/gcc/cccp.c
diff options
context:
space:
mode:
authorbrolley <brolley@138bc75d-0d04-0410-961f-82ee72b054a4>1998-12-07 14:57:30 +0000
committerbrolley <brolley@138bc75d-0d04-0410-961f-82ee72b054a4>1998-12-07 14:57:30 +0000
commitae667da334303392d2c8d91c718d973752677de6 (patch)
treeb4caf25320b0e53c6673cf24365c3f744631bb63 /gcc/cccp.c
parent5a9d893105afee655fb9f0fdd551d4b2b096100b (diff)
downloadppe42-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.c26
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 '\"':
OpenPOWER on IntegriCloud