Re: Linux kernel, possible useless continue
- From: Rainer Weikusat <rainer.weikusat@xxxxxxxxx>
- Date: Wed, 21 Mar 2007 12:54:34 +0100
Ulrich Eckhardt <doomster@xxxxxxxx> writes:
Rainer Weikusat wrote:
Ulrich Eckhardt <doomster@xxxxxxxx> writes:
[...]
for(...)
if(x)
continue;
for(..; .. && !x; ..)
..
The only difference is the initialisation statement in the inner
loop, and for the case we're talking about this small difference
doesn't make a difference overall, in particular not when it is
compiled with a halfway-decent optimiser.
As I understood the original question, it was about code semantics and
not about hypothetical, accidental properties of unknown machine code
generated by a random compiler for an arbitrary architecture.
The compiler that is able to digest Linux is not so random ... ;)
It is at least a range of gcc releases.
Seriously, fact remains that the initialisation is low-cost in any
environment.
This depends on the generated machine code (eg does it initialize a
register or a memory location) and on the definition of 'low-cost'.
Also, it might even be weighed up by the removal of the check
for the continue and less instruction-cache use,
This depends on the generated return code as well.
but neither is important enough to merit any obfuscations in code
To me, the code is 'more obfuscated' if it contains more semantically
useless things, which I have to understand to understand that they are
semantically useless.
[...]
What remains fact is that the if-clause with the continue can be removed
without changing the behaviour of the code,
This may or may not be so, and depends on the generated machine code
as well.
And wasn't "established theory" that one should rather not code to
the idiosynkrasies of some translation or execution environment, but
instead try to express the intent of the code clearly and leave 'the
gory details' exactly to the compiler?
I'm not sure what you are implying with this.
I am not implying anything. What you advocate would be a
compiler version and translation algorithm dependant hack. That the
hack is not intended to improve the generated code, only believed to
not make it worse doesn't make it less of one. This is the stuff one
may include in code if there is evidence that it actually improves
something relevant, and even then, it should better be avoided.
.
- References:
- Linux kernel, possible useless continue
- From: Bin Chen
- Re: Linux kernel, possible useless continue
- From: Ulrich Eckhardt
- Re: Linux kernel, possible useless continue
- From: Iwo Mergler
- Re: Linux kernel, possible useless continue
- From: Ulrich Eckhardt
- Re: Linux kernel, possible useless continue
- From: Rainer Weikusat
- Re: Linux kernel, possible useless continue
- From: Ulrich Eckhardt
- Linux kernel, possible useless continue
- Prev by Date: Re: Shared Memory...Some Questions.....
- Next by Date: Re: Shared Memory...Some Questions.....
- Previous by thread: Re: Linux kernel, possible useless continue
- Next by thread: review chapter of new OS textbook, get book and acknowledgement
- Index(es):
Relevant Pages
|