Fix cpp_sys_macro_p with -ftrack-macro-expansion

cpp_sys_macro_p crashes when -ftrack-macro-expansion is on.  The issue
can be reproduced by running the tests:

    runtest --tool gcc --tool_opts="-ftrack-macro-expansion" cpp.exp=sysmac1.c
    runtest --tool gcc --tool_opts="-ftrack-macro-expansion" cpp.exp=sysmac2.c

This is because it just doesn't support that mode.  Fixed thus.
Tested and bootstrapped on x86_64-unknown-linux-gnu against trunk.

Note that the bootstrap with -ftrack-macro-expansion turned on
exhibits other separate issues that are addressed in subsequent
patches.  This patch just fixes one class of problems.

The patch does pass bootstrap with -ftrack-macro-expansion turned off,
though.

libcpp/

	* macro.c (cpp_sys_macro_p):  Support -ftrack-macro-expansion.

From-SVN: r186965
This commit is contained in:
Dodji Seketeli 2012-04-30 11:41:08 +00:00 committed by Dodji Seketeli
parent b38086f06a
commit 4e65a47055
2 changed files with 11 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2012-04-30 Dodji Seketeli <dodji@redhat.com>
Fix cpp_sys_macro_p with -ftrack-macro-expansion
* macro.c (cpp_sys_macro_p): Support -ftrack-macro-expansion.
2012-04-29 Dodji Seketeli <dodji@redhat.com>
* lex.c (lex_raw_string): Change C++ style comments into C style

View File

@ -2436,7 +2436,12 @@ cpp_get_token_with_location (cpp_reader *pfile, source_location *loc)
int
cpp_sys_macro_p (cpp_reader *pfile)
{
cpp_hashnode *node = pfile->context->c.macro;
cpp_hashnode *node = NULL;
if (pfile->context->tokens_kind == TOKENS_KIND_EXTENDED)
node = pfile->context->c.mc->macro_node;
else
node = pfile->context->c.macro;
return node && node->value.macro && node->value.macro->syshdr;
}