From e2e1fa50d933574f7711d9b4f6493381d68ae3fd Mon Sep 17 00:00:00 2001 From: Alexandre Oliva Date: Wed, 24 Sep 2003 23:53:07 +0000 Subject: [PATCH] cpplib.c (do_pragma): Reintroduce cb_line_change call in the code path that calls a handler. * cpplib.c (do_pragma): Reintroduce cb_line_change call in the code path that calls a handler. From-SVN: r71744 --- gcc/ChangeLog | 5 +++++ gcc/cpplib.c | 14 ++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5b938b90df4..3e2d5703a65 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2003-09-24 Alexandre Oliva + + * cpplib.c (do_pragma): Reintroduce cb_line_change call in the + code path that calls a handler. + 2003-09-24 Nathanael Nerode * config.gcc (c4x-*, tic4x-*, d30v-*, mmix-knuth-mmixware): diff --git a/gcc/cpplib.c b/gcc/cpplib.c index 6a0f3e0d64b..5a927555468 100644 --- a/gcc/cpplib.c +++ b/gcc/cpplib.c @@ -1120,7 +1120,7 @@ static void do_pragma (cpp_reader *pfile) { const struct pragma_entry *p = NULL; - const cpp_token *token; + const cpp_token *token, *pragma_token = pfile->cur_token; unsigned int count = 1; pfile->state.prevent_expansion++; @@ -1141,7 +1141,17 @@ do_pragma (cpp_reader *pfile) } if (p) - p->u.handler (pfile); + { + /* Since the handler below doesn't get the line number, that it + might need for diagnostics, make sure it has the right + numbers in place. */ + if (pfile->cb.line_change) + (*pfile->cb.line_change) (pfile, pragma_token, false); + (*p->u.handler) (pfile); + if (pfile->cb.line_change) + (*pfile->cb.line_change) (pfile, pfile->cur_token, false); + + } else if (pfile->cb.def_pragma) { _cpp_backup_tokens (pfile, count);