re PR preprocessor/35322 (ICE with incomplete macro)

gcc/testsuite
	PR libcpp/35322:
	* gcc.dg/cpp/pr35322.c: New file.
libcpp
	PR libcpp/35322:
	* directives.c (destringize_and_run): Set pfile->directive.

From-SVN: r133195
This commit is contained in:
Tom Tromey 2008-03-13 21:10:07 +00:00 committed by Tom Tromey
parent ca8bfb99cd
commit 14ccf8003e
4 changed files with 18 additions and 0 deletions

View 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.

View File

@ -0,0 +1,4 @@
/* Test case for PR 35322 -- _Pragma ICE. */
/* { dg-do preprocess } */
_Pragma("GCC dependency")

View 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

View File

@ -1507,6 +1507,7 @@ destringize_and_run (cpp_reader *pfile, const cpp_string *in)
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');
@ -1547,8 +1548,11 @@ destringize_and_run (cpp_reader *pfile, const cpp_string *in)
start_directive (pfile);
_cpp_clean_line (pfile);
save_directive = pfile->directive;
pfile->directive = &dtable[T_PRAGMA];
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