This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: bug in tradcpp.c and patch fixing it
- To: Sam Steingold <sds at gnu dot org>
- Subject: Re: bug in tradcpp.c and patch fixing it
- From: Neil Booth <neil at daikokuya dot demon dot co dot uk>
- Date: Tue, 21 Aug 2001 18:10:20 +0100
- Cc: gcc-bugs at gcc dot gnu dot org, gcc-patches at gcc dot gnu dot org
- References: <uelqcgi1k.fsf@xchange.com>
Thanks, I've committed this to 3.1.
Neil.
Sam Steingold wrote:-
> --- gcc/ChangeLog.old Thu Aug 16 11:01:10 2001
> +++ gcc/ChangeLog Thu Aug 16 11:06:36 2001
> @@ -1,3 +1,8 @@
> +2001-08-16 Sam Steingold <sds@gnu.org>
> +
> + * tradcpp.c (rescan): define obufp_before_macroname before RECACHE
> + (RECACHE): keep obufp_before_macroname up to date
> +
> 20010617 Release Manager
>
> * GCC 3.0 Released.
> --- gcc/tradcpp.c.old Thu Aug 16 11:01:10 2001
> +++ gcc/tradcpp.c Thu Aug 16 11:05:46 2001
> @@ -1220,6 +1220,9 @@
> /* Record position of last `real' newline. */
> U_CHAR *beg_of_line;
>
> + /* This has to be a global bacause of RECACHE */
> + U_CHAR *obufp_before_macroname = NULL;
> +
> /* Pop the innermost input stack level, assuming it is a macro expansion. */
>
> #define POPMACRO \
> @@ -1237,6 +1240,7 @@
> op->bufp = obp; \
> check_expand (op, limit - ibp); \
> beg_of_line = 0; \
> + obufp_before_macroname += op->bufp - obp; \
> obp = op->bufp; } while (0)
>
> if (no_output && instack[indepth].fname != 0)
> @@ -1647,7 +1651,8 @@
> hp = hp->next) {
>
> if (hp->length == ident_length) {
> - U_CHAR *obufp_before_macroname;
> + /* obufp_before_macroname is used only in this block,
> + but it has to be global because of RECACHE */
> int op_lineno_before_macroname;
> register int i = ident_length;
> register U_CHAR *p = hp->name;
>