Re: [PATCH lt/block-sha1 0/2 v3] block-sha1: avoid pointer conversion that violates alignment constraints
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jul 23, 2012, 05:42 UTC
- Message-ID
- <7vboj7nidc.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <20120723052605.GA13728@burratino>
Jonathan Nieder <jrnieder@gmail.com> writes:
Show 17 quoted lines
> Junio C Hamano wrote: >> Jonathan Nieder <jrnieder@gmail.com> 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.