Bernd Edlinger <bernd.edlin...@hotmail.de> writes: > Hi, > > this fixes a -Wshadow=local warning when using AUTO_DUMP_SCOPE in > nested blocks. Since NAME i a string I cannot use it to create > a unique name for the auto_dump_scope object. > > So I used XCONCAT2 from good old symcat.h, to mangle the __LINE__ > macro into the scope object name.
Seems a pity to reintroduce uses of symcat.h again now when it was originally only a bridge from pre-ISO C. How about just importing XCONCAT2 into system.h instead? I guess it's a bit of an abuse of system.h, but not really much worse than CEIL, ROUND_UP, etc., and that's where symcat.h was originally included. Thanks, Richard > Bootstrapped and reg-tested on x86_64-pc-linux-gnu. > Is it OK for trunk? > > > Thanks > Bernd. > > 2019-10-03 Bernd Edlinger <bernd.edlin...@hotmail.de> > > * dumpfile.h (AUTO_DUMP_SCOPE): Use XCONCAT2 and __LINE__ > to form a unique name for the scope variable. > > Index: gcc/dumpfile.h > =================================================================== > --- gcc/dumpfile.h (revision 276484) > +++ gcc/dumpfile.h (working copy) > @@ -21,6 +21,7 @@ along with GCC; see the file COPYING3. If not see > #ifndef GCC_DUMPFILE_H > #define GCC_DUMPFILE_H 1 > > +#include "symcat.h" /* XCONCAT2 */ > #include "profile-count.h" > > /* An attribute for annotating formatting printing functions that use > @@ -634,7 +635,7 @@ class auto_dump_scope > in a nested scope implicitly default to MSG_PRIORITY_INTERNALS. */ > > #define AUTO_DUMP_SCOPE(NAME, USER_LOC) \ > - auto_dump_scope scope (NAME, USER_LOC) > + auto_dump_scope XCONCAT2 (scope, __LINE__) (NAME, USER_LOC) > > extern void dump_function (int phase, tree fn); > extern void print_combine_total_stats (void);