aboutsummaryrefslogtreecommitdiff
path: root/gcc/cppmacro.c
diff options
context:
space:
mode:
authorNeil Booth <neilb@earthling.net>2000-11-08 23:08:07 +0000
committerNeil Booth <neil@gcc.gnu.org>2000-11-08 23:08:07 +0000
commitadb84b4254d23c4ff58f53c4f48971b6cd8395d1 (patch)
tree2829d58899280886dce9cbba61c7c88422fd36e6 /gcc/cppmacro.c
parent09ff8283a84ea06073df34b17baad67126f5b68e (diff)
downloadgcc-adb84b4254d23c4ff58f53c4f48971b6cd8395d1.zip
gcc-adb84b4254d23c4ff58f53c4f48971b6cd8395d1.tar.gz
gcc-adb84b4254d23c4ff58f53c4f48971b6cd8395d1.tar.bz2
Move directive handling into the lexer itself.
* cpplex.c (_cpp_lex_token): Handle directives directly. In the case of a directive interrupting a function-like macro invocation, use extra_char since read_ahead is used to store the '#'. Return a CPP_EOF in this case. * cppmacro.c (parse_arg): No need to handle CPP_DHASH any more. (cpp_get_token): Don't handle directives here. * cpplib.h: Remove CPP_DHASH token type. From-SVN: r37329
Diffstat (limited to 'gcc/cppmacro.c')
-rw-r--r--gcc/cppmacro.c25
1 files changed, 0 insertions, 25 deletions
diff --git a/gcc/cppmacro.c b/gcc/cppmacro.c
index 24babaf..766a719 100644
--- a/gcc/cppmacro.c
+++ b/gcc/cppmacro.c
@@ -534,21 +534,6 @@ parse_arg (pfile, arg, var_args)
break;
else if (result == CPP_EOF)
break; /* Error reported by caller. */
- else if (result == CPP_DHASH)
- {
- /* 6.10.3 paragraph 11: If there are sequences of
- preprocessing tokens within the list of arguments that
- would otherwise act as preprocessing directives, the
- behavior is undefined.
-
- This implementation will report a hard error, terminate
- the macro invocation, and proceed to process the
- directive. */
- cpp_error (pfile, "directives may not be used inside a macro argument");
- _cpp_push_token (pfile, token, &pfile->lexer_pos);
- result = CPP_EOF;
- break;
- }
}
/* Empty arguments become a single placemarker token. */
@@ -1019,16 +1004,6 @@ cpp_get_token (pfile, token)
break;
continue;
}
- else if (token->type == CPP_DHASH)
- {
- /* Handle directives. */
- if (_cpp_handle_directive (pfile, token->flags & PREV_WHITE))
- continue;
- /* This is in fact an assembler #. */
- if (pfile->skipping)
- continue;
- token->type = CPP_HASH;
- }
/* We are not merging the PREV_WHITE of CPP_PLACEMARKERS. I
don't think it really matters. */
else if (pfile->skipping || token->type == CPP_PLACEMARKER)