Post a Comment
Could you please explain further. For me the line (void) (&_min1 == &_min2); is still somewhat inexplicable, since it does not seem to do anything other than compare the two pointers of the temporary variables (which are always distinct) and cast the result to void. So it seems to me as an addendum to the macro (they must have first written it without this line) to keep GCC from generating warnings. Why GCC refrains from the warning after this line is not completely clear to me.
And having special optimizations in the compiler is nice. But, isn't it a goal to have the OS as portable as possible to make it easier to port? Granted, GCC is readily available for most any platform, and readily enough ported to any other platform as needed, but so much for the claim of Linux using open standards, while at the same time purposely using compiler hacks that no other compiler has, making the code less portable.
To answer my own question...
In 2004 a German group apparently got the Linux 2.6 Kernel to compile using the Intel Compiler. It required patches and a custom pre-processor to convert some of the GCC directives. Interesting...
http://www.pyrillion.org/index.html?showframe=linuxkernelpatch.html
They claimed performance improvements of up to 40% for some limited areas of the kernel, and 8-9% overall performance improvement in general.
It is good to have such useful extensions, because it makes the code faster, and decreases chances of errors in the code. Pure C standard isn't enough for the kernel
(and a small part of it is still platform-dependent ASM, anyway).
Portability of the Linux kernel is not in danger because gcc supports enough platforms.





Thank you.