OSDN Git Service

gcc/testsuite
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 13 Mar 2008 21:10:07 +0000 (21:10 +0000)
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 13 Mar 2008 21:10:07 +0000 (21:10 +0000)
PR libcpp/35322:
* gcc.dg/cpp/pr35322.c: New file.
libcpp
PR libcpp/35322:
* directives.c (destringize_and_run): Set pfile->directive.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@133195 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/cpp/pr35322.c [new file with mode: 0644]
libcpp/ChangeLog
libcpp/directives.c

index fd8c6d5..862a43e 100644 (file)
@@ -1,3 +1,8 @@
+2008-03-13  Tom Tromey  <tromey@redhat.com>
+
+       PR libcpp/35322:
+       * gcc.dg/cpp/pr35322.c: New file.
+
 2008-03-13  Uros Bizjak  <ubizjak@gmail.com>
 
        * gcc.dg/vect/vect-align-2.c: Remove dg-do run directive.
 2008-03-13  Uros Bizjak  <ubizjak@gmail.com>
 
        * gcc.dg/vect/vect-align-2.c: Remove dg-do run directive.
diff --git a/gcc/testsuite/gcc.dg/cpp/pr35322.c b/gcc/testsuite/gcc.dg/cpp/pr35322.c
new file mode 100644 (file)
index 0000000..916b4cc
--- /dev/null
@@ -0,0 +1,4 @@
+/* Test case for PR 35322 -- _Pragma ICE.  */
+
+/* { dg-do preprocess } */
+_Pragma("GCC dependency")
index a6be847..8e8dfe4 100644 (file)
@@ -1,3 +1,8 @@
+2008-03-13  Tom Tromey  <tromey@redhat.com>
+
+       PR libcpp/35322:
+       * directives.c (destringize_and_run): Set pfile->directive.
+
 2008-03-06  Markus Milleder  <markus.milleder@generali.at>
 
        PR preprocessor/35458
 2008-03-06  Markus Milleder  <markus.milleder@generali.at>
 
        PR preprocessor/35458
index c77e84b..249a232 100644 (file)
@@ -1507,6 +1507,7 @@ destringize_and_run (cpp_reader *pfile, const cpp_string *in)
   tokenrun *saved_cur_run;
   cpp_token *toks;
   int count;
   tokenrun *saved_cur_run;
   cpp_token *toks;
   int count;
+  const struct directive *save_directive;
 
   dest = result = (char *) alloca (in->len - 1);
   src = in->text + 1 + (in->text[0] == 'L');
 
   dest = result = (char *) alloca (in->len - 1);
   src = in->text + 1 + (in->text[0] == 'L');
@@ -1547,8 +1548,11 @@ destringize_and_run (cpp_reader *pfile, const cpp_string *in)
 
   start_directive (pfile);
   _cpp_clean_line (pfile);
 
   start_directive (pfile);
   _cpp_clean_line (pfile);
+  save_directive = pfile->directive;
+  pfile->directive = &dtable[T_PRAGMA];
   do_pragma (pfile);
   end_directive (pfile, 1);
   do_pragma (pfile);
   end_directive (pfile, 1);
+  pfile->directive = save_directive;
 
   /* We always insert at least one token, the directive result.  It'll
      either be a CPP_PADDING or a CPP_PRAGMA.  In the later case, we 
 
   /* We always insert at least one token, the directive result.  It'll
      either be a CPP_PADDING or a CPP_PRAGMA.  In the later case, we