[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH 0/6] Remove some usage of shadow variable



On 10/28/2015 09:53 AM, Jan Beulich wrote:
On 27.10.15 at 18:41, <George.Dunlap@xxxxxxxxxxxxx> wrote:
On Tue, Oct 27, 2015 at 4:03 PM, Jan Beulich <JBeulich@xxxxxxxx> wrote:
On 27.10.15 at 16:39, <julien.grall@xxxxxxxxxx> wrote:
I'd like to have some input to know whether turning on -Wshadow would be
sensible in the future.

I think there are cases where using a shadowed variable might make
sense, and hence I wouldn't want to see the warning turned on by
default.

Hmm, I'm having trouble coming up with good uses off the top of my
head.  And are there any uses for which the value outweighs the value
of having the warning?

First of all - macros using the ({}) gcc extension.

This case is easy to avoid: name local variables prefixed with the
macro name. While this isn't true today, I think this would be a good
policy for future changes.

And second variables
whose name is kind of natural (e.g. "d" for struct domain * instances)
but which are intentionally shadowing a larger scope one in order to
not clobber that one's value.

Hmm, wouldn't something like tmp_d or d_tmp be a proper solution?
There are other cases where more than one domain reference are needed
and it was possible to find proper variable names.

And in line with my response to Andrew -- could we enable -Wshadow
until we find a use for shadowing whose value outweighs the risks of
building without it?

I have seen hard to find bugs before which were caused by shadowing
variables. Shadowing variables even on purpose is something we should
avoid IMO.

Risking - along the lines of what Andrew said - build breakage for
random people, just due to the gcc version they happen to use?
I'm usually getting pretty upset when running into problems specific
to certain gcc versions, where people fairly clearly didn't think about
making their code sufficiently general. I don't know how people will
feel if we intentionally break their build (well, not really intentionally,
but we'd intentionally take the risk of doing so).

Is it really true that an older gcc might barf while a new one doesn't
in case of shadowing? I don't think so. A test build with -Wshadow using
the most recent gcc succeeding should do so with an older gcc as well.

And then, simply based on the patches that Julien sent so far: Are
we suspecting any bugs because of shadowing variables? None of
his patches fixed anything; they were just cleanup for cases where
the shadowing was pointless (and perhaps not even intended).

Risking to repeat myself: I think shadowing on purpose is evil and leads
to code which is harder to maintain.


Just my 0.02€


Juergen


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.