]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR preprocessor/39213 (Preprocessor ICE with -m64 and --traditional-cpp)
authorEric Botcazou <ebotcazou@adacore.com>
Tue, 4 Jan 2011 23:18:52 +0000 (23:18 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Tue, 4 Jan 2011 23:18:52 +0000 (23:18 +0000)
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: r168492

libcpp/ChangeLog
libcpp/directives.c

index e5f50399bffa02250e141e1710b1bc45e042487a..cb493c6c55746e1e1f2174024f08d80001ff582b 100644 (file)
@@ -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-10-01  Release Manager
 
        * GCC 4.4.5 released.
index 49f70b54da19667c7677af3a046176facd7b915c..412a214a2d710f5ef994079fea6e544c6afac324 100644 (file)
@@ -276,16 +276,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)
     {