git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jonathan Nieder <jrnieder@gmail.com>
To: Michael Cree <mcree@orcon.net.nz>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
	git@vger.kernel.org, Nicolas Pitre <nico@fluxnic.net>
Subject: Re: [PATCH maint-1.6.5 v2] block-sha1: avoid pointer conversion that violates alignment constraints
Date: Sun, 15 Jul 2012 16:27:31 -0500	[thread overview]
Message-ID: <20120715212731.GG1986@burratino> (raw)
In-Reply-To: <FDFB73BB-64E8-48F8-95DB-94C0EC7FFB2A@orcon.net.nz>

Hi,

Michael Cree wrote:

> On 15/07/2012, at 8:50 AM, Jonathan Nieder wrote:

>>                   gcc takes full advantage by converting the get_be32
>> calls back to a load and bswap and producing a whole bunch of
>> unaligned access traps.
>
> Alpha does not have a bswap (or similar) instruction.
[...]
>                                    .  If the pointer is unaligned
> then two neighbouring aligned 32bit loads are required to ensure
> that all four bytes are loaded.  If the pointer is aligned then a
> single 32bit load gets all the four bytes.  Having never looked at
> the generated assembler code, I nevertheless suspect that is the
> guts of the optimisation --- the compiler can eliminate an access to
> memory if it knows the pointer is aligned.

How about:

	gcc takes full advantage by using a single 32-bit load,
	resulting in a whole bunch of unaligned access traps.

You can see the generated assembler with "make block-sha1/sha1.s" and
reading the resulting sha1.s file in the current working directory
(oops).  I don't have an alpha cross-compiler installed or access to
an alpha to check for myself.

-- >8 --
Subject: Makefile: fix location of listing produced by "make subdir/foo.s"

When I invoke "make block-sha1/sha1.s", 'make' runs $(CC) -S without
specifying where it should put its output and the output ends up in
./sha1.s.  Confusing.

Add an -o option to the .s rule to fix this.  We were already doing
that for most compiler invocations but had forgotten it for the
assembler listings.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
Thanks,
Jonathan

 Makefile |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Makefile b/Makefile
index dc709029..e8d2798f 100644
--- a/Makefile
+++ b/Makefile
@@ -2230,7 +2230,7 @@ $(ASM_OBJ): %.o: %.S GIT-CFLAGS $(missing_dep_dirs)
 endif
 
 %.s: %.c GIT-CFLAGS FORCE
-	$(QUIET_CC)$(CC) -S $(ALL_CFLAGS) $(EXTRA_CPPFLAGS) $<
+	$(QUIET_CC)$(CC) -o $@ -S $(ALL_CFLAGS) $(EXTRA_CPPFLAGS) $<
 
 ifdef USE_COMPUTED_HEADER_DEPENDENCIES
 # Take advantage of gcc's on-the-fly dependency generation
-- 
1.7.10.4

  reply	other threads:[~2012-07-15 21:28 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20120713233957.6928.87541.reportbug@electro.phys.waikato.ac.nz>
     [not found] ` <20120714002950.GA3159@burratino>
     [not found]   ` <5000CBCA.8020607@orcon.net.nz>
     [not found]     ` <20120714021856.GA3062@burratino>
     [not found]       ` <50010B84.5030606@orcon.net.nz>
2012-07-14  7:59         ` [PATCH maint-1.6.5] block-sha1: avoid unaligned accesses on some big-endian systems Jonathan Nieder
2012-07-14 19:11           ` Linus Torvalds
2012-07-14 19:50             ` Jonathan Nieder
2012-07-14 19:55               ` Linus Torvalds
2012-07-14 20:50             ` [PATCH maint-1.6.5 v2] block-sha1: avoid pointer conversion that violates alignment constraints Jonathan Nieder
2012-07-14 20:56               ` Linus Torvalds
2012-07-14 21:57                 ` [PATCH] block-sha1: put macro arguments in parentheses Jonathan Nieder
2012-07-15 20:58               ` [PATCH maint-1.6.5 v2] block-sha1: avoid pointer conversion that violates alignment constraints Michael Cree
2012-07-15 21:27                 ` Jonathan Nieder [this message]
2012-07-16  9:53                   ` Michael Cree

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20120715212731.GG1986@burratino \
    --to=jrnieder@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=mcree@orcon.net.nz \
    --cc=nico@fluxnic.net \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).