Re: [PATCH] net #9

Jean Tourrilhes
2001-05-30T02:02:18Z

On Tue, May 29, 2001 at 09:47:19PM -0400, Jeff Garzik wrote:
> Jean Tourrilhes wrote:
> >
> > On Tue, May 29, 2001 at 09:13:34PM -0400, Jeff Garzik wrote:
> > >
> > > This is standard kernel cleanup that makes the resulting image smaller.
> > > These patches have been going into all areas of the kernel for quite
> > > some time.
> >
> > This doesn't make it right.
> >
> > Ok, while we are on the topic : could somebody explain me why
> > we can't get gcc to do that for us ? What is preventing adding a gcc
> > command line flag to do exactly that ? It's not like rocket science
> > (simple test) and would avoid to have tediously to go through all
> > source code, past, present and *future* to make those changes.
> > Bah, maybe it's too straightforward...
>
> This is ANSI C standard stuff. If a static object with a scalar type is
> not explicitly initialized, it is initialized to zero by default.
>
> Sure we can get gcc to recognize that case, but why use gcc to work
> around code that avoids an ANSI feature?

Good standard don't mandate the implementation. And as
somebody doing some other language said, there is more than one way to
do it.
ANSI C doesn't prohibit to initialise variable to zero
(AFAIK). ANSI C doesn't prevent the compiler to optimise for this
case. If I initialise the varaible 3 time to the same value in a row,
gcc will remove the other two.

Let's put it another way... What's different between :
for(i = 0; i < n; i++) xxx;
And :
i = 0; while(i++ < n) xxx;
I would expect the compiler to produce code as efficient in
both cases, and leave the choice of coding style to the user.

Jean