diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2011-01-04 23:18:12 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2011-01-04 23:18:12 +0000 |
commit | c5a62c6fde09060ca31dc302807d1f49fb95eacf (patch) | |
tree | 65c6ea81e590957df7711f8d5092ee7836531093 | |
parent | c7f15f802ae87838bdd4491189a4c9fa7d31040e (diff) | |
download | gcc-c5a62c6fde09060ca31dc302807d1f49fb95eacf.zip gcc-c5a62c6fde09060ca31dc302807d1f49fb95eacf.tar.gz gcc-c5a62c6fde09060ca31dc302807d1f49fb95eacf.tar.bz2 |
re PR preprocessor/39213 (Preprocessor ICE with -m64 and --traditional-cpp)
PR preprocessor/39213
* directives.c (end_directive): Call _cpp_remove_overlay for deferred
pragmas as well in traditional mode.
Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
From-SVN: r168490
-rw-r--r-- | libcpp/ChangeLog | 7 | ||||
-rw-r--r-- | libcpp/directives.c | 9 |
2 files changed, 12 insertions, 4 deletions
diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog index 06fd94a..e90f753 100644 --- a/libcpp/ChangeLog +++ b/libcpp/ChangeLog @@ -1,3 +1,10 @@ +2011-11-04 Eric Botcazou <ebotcazou@adacore.com> + Jakub Jelinek <jakub@redhat.com> + + PR preprocessor/39213 + * directives.c (end_directive): Call _cpp_remove_overlay for deferred + pragmas as well in traditional mode. + 2010-11-17 Ian Lance Taylor <iant@google.com> PR bootstrap/45538 diff --git a/libcpp/directives.c b/libcpp/directives.c index 6462605..85a17b1 100644 --- a/libcpp/directives.c +++ b/libcpp/directives.c @@ -281,16 +281,17 @@ start_directive (cpp_reader *pfile) static void end_directive (cpp_reader *pfile, int skip_line) { - if (pfile->state.in_deferred_pragma) - ; - else if (CPP_OPTION (pfile, traditional)) + if (CPP_OPTION (pfile, traditional)) { /* Revert change of prepare_directive_trad. */ - pfile->state.prevent_expansion--; + if (!pfile->state.in_deferred_pragma) + pfile->state.prevent_expansion--; if (pfile->directive != &dtable[T_DEFINE]) _cpp_remove_overlay (pfile); } + else if (pfile->state.in_deferred_pragma) + ; /* We don't skip for an assembler #. */ else if (skip_line) { |