aboutsummaryrefslogtreecommitdiff
path: root/gcc/cpplib.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/cpplib.c')
-rw-r--r--gcc/cpplib.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/gcc/cpplib.c b/gcc/cpplib.c
index acc71e7..aecfbaf 100644
--- a/gcc/cpplib.c
+++ b/gcc/cpplib.c
@@ -256,14 +256,11 @@ end_directive (pfile, skip_line)
{
if (CPP_OPTION (pfile, traditional))
{
- if (!pfile->directive || pfile->directive == &dtable[T_DEFINE])
- skip_line = false;
- else
+ if (pfile->directive != &dtable[T_DEFINE])
_cpp_remove_overlay (pfile);
}
-
/* We don't skip for an assembler #. */
- if (skip_line)
+ else if (skip_line)
{
skip_rest_of_line (pfile);
if (!pfile->keep_tokens)
@@ -289,7 +286,8 @@ prepare_directive_trad (pfile)
CUR (pfile->context) = pfile->buffer->cur;
else
{
- bool no_expand = ! (pfile->directive->flags & EXPAND);
+ bool no_expand = (pfile->directive
+ && ! (pfile->directive->flags & EXPAND));
bool was_skipping = pfile->state.skipping;
pfile->state.skipping = false;
@@ -382,6 +380,10 @@ _cpp_handle_directive (pfile, indented)
"style of line directive is a GCC extension");
}
+ pfile->directive = dir;
+ if (CPP_OPTION (pfile, traditional))
+ prepare_directive_trad (pfile);
+
if (dir)
{
/* If we have a directive that is not an opening conditional,
@@ -441,9 +443,6 @@ _cpp_handle_directive (pfile, indented)
pfile->state.save_comments =
! CPP_OPTION (pfile, discard_comments_in_macro_exp);
- pfile->directive = dir;
- if (CPP_OPTION (pfile, traditional))
- prepare_directive_trad (pfile);
(*pfile->directive->handler) (pfile);
}
else if (skip == 0)