On Thu, Oct 3, 2019 at 5:18 PM Bernd Edlinger <bernd.edlin...@hotmail.de> wrote: > > Hi, > > this fixes -Wshadow=local warnings in passes.c. > The non-trivial part is due to the PUSH_INSERT_PASSES_WITHIN > is used recursively, and shadows the local value p > in each invocation. > > Fixed by using a helper class that restores the saved content > of p at the end of the block. > > The shadowing variable in ipa_write_summaries can simply be > removed sine the outer variable of the same name has the > same type and is not live here, this is a trivial change. > > > Bootstrapped and reg-tested on x86_64-pc-linux-gnu. > Is it OK for trunk?
The class seems to be a poor-mans way to avoid the warning while the current use is more clear. You do { int i; { // int i; ... oops, warning int prev_i_1 = i; i = ... // fixup i = prev_i_1; } Using of a C++ class doesn't make this less obviously worse. If this ends up acked then please add this to ansidecl.h or somewhere else global as template: template <typename T> struct push { push (T &); ~push (); T *m_loc; T m_val; }; because it would be a general solution for _all_ shadow=local warnings?! Richard. > > Thanks > Bernd. >