From 65861c3e930391c2c259fbf497a763d8bae43510 Mon Sep 17 00:00:00 2001 From: ebotcazou Date: Tue, 4 Jan 2011 23:18:12 +0000 Subject: PR preprocessor/39213 * directives.c (end_directive): Call _cpp_remove_overlay for deferred pragmas as well in traditional mode. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@168490 138bc75d-0d04-0410-961f-82ee72b054a4 --- libcpp/ChangeLog | 7 +++++++ libcpp/directives.c | 9 +++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog index 06fd94a778c..e90f75379d6 100644 --- a/libcpp/ChangeLog +++ b/libcpp/ChangeLog @@ -1,3 +1,10 @@ +2011-11-04 Eric Botcazou + Jakub Jelinek + + 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 PR bootstrap/45538 diff --git a/libcpp/directives.c b/libcpp/directives.c index 6462605c3f4..85a17b146c2 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) { -- cgit v1.2.1