Re: [RFC PATCH 1/2] Replace memset(0) with static initialization where possible

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

 



Nicolas Pitre wrote:
> On Thu, 9 Oct 2008, Brandon Casey wrote:
> 
>> "Possible" benefits:
>>
>>   1) more concise, so it improves readability in most cases
>>   2) gives compiler more flexibility when optimizing
> 
> Beware beware.  At some point this wasn't a gain at all with some gcc 
> versions as it was stupid enough to construct a temporary object on the 
> stack corresponding to "{ 0, }" and afterward do the assignment by 
> *copying* this object to a different stack slot corresponding to the 
> actual variable instead of constructing the initial value in place.
> 
> Also note that, on the other hand, gcc is smart enough to optimize a 
> memset() using a constant size and value already by doing appropriate 
> code replacement inline.  I've also seen cases where gcc did the 
> opposite and replaced an explicit assignment like your patch does with 
> an actual call to memset() when optimizing for size.

I'd call that flexibility.

> So when claiming flexibility for the compiler to better optimize things, 
> please make sure this is really what is happening through assembly dump 
> inspection.

I didn't claim the compiler _would_ do a better job at optimizing if
memset wasn't used (though my expectation is that it would do no worse,
and I don't have assembly dumps to back that up). I suggested it could
give the compiler more flexibility. In some strange way you seem to
agree with me and have given 3 examples of ways that compilers may
optimize static initialization. :)

Anyway, this is a nothing patch. There is no functional change.
If readability is not improved, it is not worth applying. Of course, I
don't plan on scanning through and converting all of the existing assignments
which use { 0, } to use memset. I find a single step declaration/initialization
simpler. Not sure why that seems to be the case in the git source for simple
variables but not structures.

-brandon
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux