# Re: [PATCH GIT 0.6] make use of register variables & size_t

2 messages from 2005-04-25 to 2005-04-26. Participants: Bodo Eggert <harvested.in.lkml@posting.7eggert.dyndns.org>.
Thread: https://gitlist.dev/t/308

## Bodo Eggert <harvested.in.lkml@posting.7eggert.dyndns.org>, 2005-04-25 17:36

Subject: Re: [PATCH GIT 0.6] make use of register variables & size_t
Message-ID: <E1DQ7Vg-0003fq-DC@be1.7eggert.dyndns.org>
URL: https://gitlist.dev/e/E1DQ7Vg-0003fq-DC%40be1.7eggert.dyndns.org
In-Reply-To: <3X9X6-5JP-27@gated-at.bofh.it>

```
Matthias-Christian Ott <matthias.christian@tiscali.de> wrote:

> The "git" didn't try store small variables, which aren't referenced, in
> the processor registers. It also didn't use the size_t type. I corrected
> a C++ style comment too.

I have compared functions using 'register' against functions not doing that.
Not using register allowed better optimization on my x86.
-- 
The most dangerous thing in the world is a second lieutenant with a map and
a compass.


```

## Bodo Eggert <harvested.in.lkml@posting.7eggert.dyndns.org>, 2005-04-26 18:18

Subject: Re: [PATCH GIT 0.6] make use of register variables & size_t
Message-ID: <E1DQUdL-0000rx-P3@be1.7eggert.dyndns.org>
URL: https://gitlist.dev/e/E1DQUdL-0000rx-P3%40be1.7eggert.dyndns.org
In-Reply-To: <3XfpD-21C-11@gated-at.bofh.it>

```
Matthias-Christian Ott <matthias.christian@tiscali.de> wrote:

> And if you think "register" variables are outdated, please remove the
> CONFIG_REGPARM option from the Kernel source.

Register variables are outdated because they hinder the compiler from
optimizing by taking away 1/7 of the usable registers on x86. Use six
register variables and you're back to a accumulator-machine.
Use -O2 or -Os instead, the compiler is smarter than you.

The regparm calling convention will change the
load value -> store value on stack -> call sequence into
load value -> call -> store if needed
Obviously the second form can be better optimized than the first one.
Therefore it's a gain instead of a loss.

If you really want to help the compiler, look for something like repeated
pointer dereference or access to global variables and cache them in block-
local variables (pointers, int and uint only, even for caching chars).
Beware of volatile variables, and don't forget to look at the assembler code.
-- 
The generation of random numbers is too important to be left to chance. 


```
