Related articles |
---|
[13 earlier articles] |
Re: Possible ANSI C Optimisation Done in Practice? ralph@inputplus.demon.co.uk (2001-12-24) |
Re: Possible ANSI C Optimisation Done in Practice? nmm1@cus.cam.ac.uk (2001-12-24) |
Re: Possible ANSI C Optimisation Done in Practice? toon@moene.indiv.nluug.nl (Toon Moene) (2001-12-24) |
Re: Possible ANSI C Optimisation Done in Practice? nmm1@cus.cam.ac.uk (2001-12-27) |
Re: Possible ANSI C Optimisation Done in Practice? david.thompson1@worldnet.att.net (David Thompson) (2001-12-27) |
Re: Possible ANSI C Optimisation Done in Practice? david.thompson1@worldnet.att.net (David Thompson) (2002-01-03) |
Re: Possible ANSI C Optimisation Done in Practice? ralph@inputplus.demon.co.uk (2002-01-05) |
From: | ralph@inputplus.demon.co.uk (Ralph Corderoy) |
Newsgroups: | comp.compilers |
Date: | 5 Jan 2002 01:44:10 -0500 |
Organization: | InputPlus Ltd. |
References: | 01-12-050 01-12-068 01-12-079 02-01-016 |
Keywords: | optimize, comment |
Posted-Date: | 05 Jan 2002 01:44:10 EST |
Hi David,
> > t is initialised to point to tmp and is only ever incremented.
> > Under ANSI C it's only valid to continue until t points to one char
> > past the end of tmp. tmp is a local variable to the routine, s is
> > a parameter passed in, so they can't overlap. Therefore writing to
> > *t can't affect s. Surely, this kind of reasoning is made use of
> > in a compiler, why else did ANSI `tighten' C with these kind of
> > rules?
>
> The fact that this can sometimes assist in aliasing analysis is
> mostly a happy accident.
Surely something the committee knew could be of use in optimisation.
> As already noted, C99 does so more generally and formally with
> 'restrict'; by your logic, this wouldn't have been added if it
> weren't needed, right?
I said it `tightened' it, not made it so optimal that no further
improvement was necessary, so you're wrong to imply I think restrict
can have no use.
Cheers,
Ralph.
[The committee most certainly knew that aliasing makes optimization much
harder. C89 almost had a 'noalias' keyword but it was taken out late in
the process when they realized that its definition had problems that they
couldn't fix in a reasonable amount of time. Ten years later they had
time to define 'restrict'. -John]
Return to the
comp.compilers page.
Search the
comp.compilers archives again.