From: Andrea Arcangeli <andrea@suse.de>
To: Bernardo Innocenti <bernie@develer.com>
Cc: Richard Henderson <rth@twiddle.net>,
Linus Torvalds <torvalds@osdl.org>,
linux-kernel@vger.kernel.org,
Peter Chubb <peter@chubb.wattle.id.au>,
Andrew Morton <akpm@digeo.com>, Ian Molton <spyro@f2s.com>,
gcc@gcc.gnu.org
Subject: Re: [PATCH] Fix do_div() for all architectures
Date: Thu, 10 Jul 2003 22:19:39 +0200 [thread overview]
Message-ID: <20030710201939.GQ16313@dualathlon.random> (raw)
In-Reply-To: <200307102131.45474.bernie@develer.com>
On Thu, Jul 10, 2003 at 09:31:45PM +0200, Bernardo Innocenti wrote:
> On Thursday 10 July 2003 18:39, Richard Henderson wrote:
>
> > On Thu, Jul 10, 2003 at 06:18:59PM +0200, Andrea Arcangeli wrote:
> > > On Thu, Jul 10, 2003 at 08:40:19AM -0700, Richard Henderson wrote:
> > > > On Tue, Jul 08, 2003 at 08:27:26PM +0200, Bernardo Innocenti wrote:
> > > > > +extern uint32_t __div64_32(uint64_t *dividend, uint32_t
> > > > > divisor) __attribute_pure__;
> > > >
> > > > ...
> > > >
> > > > > + __rem = __div64_32(&(n), __base); \
> > > >
> > > > The pure declaration is very incorrect. You're writing to N.
> > >
> > > now pure sounds more reasonable, I wondered how could gcc keep track
> > > of the stuff pointed by the parameters (especially if this stuff
> > > points to other stuff etc.. ;).
>
> The compiler could easily tell what memory can be clobbered by a pointer
> by applying type-based aliasing rules. For example, a function taking a
> "char *" can't clobber memory objects declared as "long bar" or
> "struct foo".
>
> Without type based alias analysis, the compiler is forced to flush
> all registers containing copies of memory objects before function
> call and reloading values from memory afterwards.
the kernel isn't complaint with the alias analysis, that's why it has to
be turned off (-fnostrict-aliasing) or stuff would break.
> Boy, that's ugly! It's too bad C can't do it the Perl way:
>
> (n,rem) = __div64_32(n, base);
or the python way:
n, rem = __div64_32(n, base)
;)
Andrea
next prev parent reply other threads:[~2003-07-10 20:05 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-07-05 23:33 Bernardo Innocenti
2003-07-06 7:47 ` Russell King
2003-07-06 15:40 ` Ian Molton
2003-07-07 4:26 ` Bernardo Innocenti
2003-07-08 18:27 ` Bernardo Innocenti
2003-07-08 18:31 ` Andrew Morton
2003-07-08 20:56 ` Bernardo Innocenti
2003-07-10 15:40 ` Richard Henderson
2003-07-10 16:18 ` Andrea Arcangeli
2003-07-10 16:39 ` Richard Henderson
2003-07-10 19:31 ` Bernardo Innocenti
2003-07-10 19:53 ` Dale Johannesen
2003-07-10 20:19 ` Andrea Arcangeli [this message]
2003-07-10 22:58 ` Bernardo Innocenti
2003-07-10 22:04 ` Richard Henderson
2003-07-10 23:13 ` Bernardo Innocenti
-- strict thread matches above, loose matches on Subject: below --
2003-07-02 16:16 [PATCH] Kill div64.h dupes, parenthesize do_div() macro params Linus Torvalds
2003-07-03 10:43 ` [PATCH] Fix do_div() for all architectures Bernardo Innocenti
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=20030710201939.GQ16313@dualathlon.random \
--to=andrea@suse.de \
--cc=akpm@digeo.com \
--cc=bernie@develer.com \
--cc=gcc@gcc.gnu.org \
--cc=linux-kernel@vger.kernel.org \
--cc=peter@chubb.wattle.id.au \
--cc=rth@twiddle.net \
--cc=spyro@f2s.com \
--cc=torvalds@osdl.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
all inboxes | Powered by JetHome®