From: Junio C Hamano Date: Mon, 23 Jul 2012 05:42:23 GMT Subject: Re: [PATCH lt/block-sha1 0/2 v3] block-sha1: avoid pointer conversion that violates alignment constraints Message-ID: <7vboj7nidc.fsf@alter.siamese.dyndns.org> In-Reply-To: <20120723052605.GA13728@burratino> Jonathan Nieder writes: > Junio C Hamano wrote: >> Jonathan Nieder writes: > >>> The big-endian part was just my idiocy, sorry. >> >> Hrm, do we want an update log message for 1/2 then? > > Hm, I thought all the crazy had been eliminated already. > > *looks again* > > I guess "using a single 32-bit load" makes it sound like it's using a > big-endian load instead of a load followed by twiddling in registers. > > Simplest fix would be to drop the phrase "by using a single 32-bit > load", leaving "... and gcc takes full advantage, resulting in a whole > bunch of unaligned access traps." I was just being stupid, misread the original code and did not realize that the generic code quoted in your log message: #define get_be32(p) ( \ ... byte-at-a-time implementation ) is not limited to big endian boxes [*1*]. So I think the message is fine as-is. [Footnote] *1* In other words, the ntohl(*(uint *)(p)) is used only on selected little endian boxes, but that does not mean the generic code was big-endian only. Little endian boxes that are not listed in #if block do use the generic byte-at-a-time macro.