Re: GCC 3.4 Heads-up

From: Andy Isaacson
Date: Fri Dec 26 2003 - 02:00:26 EST


On Thu, Dec 25, 2003 at 08:34:33PM -0800, Linus Torvalds wrote:
> The cast/conditional expression as lvalue are _particularly_ ugly
> extensions, since there is absolutely zero point to them. They are very
> much against what C is all about, and writing something like this:
>
> a ? b : c = d;
>
> is something that only a high-level language person could have come up
> with. The _real_ way to do this in C is to just do
>
> *(a ? &b : &c) = d;
>
> which is portable C, does the same thing, and has no strange semantics.

But doesn't the first one potentially let the compiler avoid spilling to
memory, if b and c are both in registers?

Not that I'm fond of gccisms, but this one at least seems to have a
potential value. And I'm sure I came up with an instance of it making
my head ache, a while back, but I can't come up with a bad example now.
Care to elaborate on your "strange semantics"?

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