lkml.org 
[lkml]   [1999]   [Jan]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: Structure vs purism ?
On Thu, Jan 21, 1999 at 10:51:51AM +0100, Krzysztof G. Baranowski wrote:
> On Wed, 20 Jan 1999, Dave Jones. wrote:
> > Just under 1000 goto's. Some of which are trivial. Goto's to one-liners,
> > which are easily tidied. Other files are real snakes-nests. Following the
> > trail of goto's as they double back on themselves is no fun for the brain,
> > even less so for a CPU, as modern features such as branch prediction are
> > misused.
> The goto's are mostly used in "fast-path", where we want to avoid
> jumping in non-error case. Look at a quick example:

This is exactly the thing we could change by giving the compiler hints.

> --- no.c ---
> main(void)
> {
> int i, j;
>
> scanf("%d %d\n", &i, &j);
>
> if (!i)
> exit();
> i++;
> if (!j)
> _exit();
> j++;
> }
> --- end ---

This is quite readable.

> --- yes.c ---
> main(void)
> {
> int i, j;
>
> scanf("%d %d\n", &i, &j);
>
> if (!i)
> goto out;
> i++;
> if (!j)
> goto out1;
> j++;
> out:
> exit();
> out1:
> _exit();
> }
> --- end ---

what I would like is something like

--- yestoo.c ---
int main(void)
{
int i,j;
scanf("%d %d\n", &i, &j);

__builtin_hint(i != 0);
if (!i)
exit();
i++;

__builtin_hint(j != 0);
if (!j)
_exit()
j++;
}
----
> --- yes.dump ---

The assembly output should be quite the same for yes.c and my version ...

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:49    [from the cache]
©2003-2011 Jasper Spaans