> > (cc list trimmed)
> >
> > alan@lxorguk.ukuu.org.uk said:
> > > If you want a strcpy that isnt strcpy then change its name or use a
> > > different language 8)
> >
> > The former is not necessarily sufficient in this case. You've still done the
> > broken pointer arithmetic, so even if the function isn't called strcpy() the
> > compiler is _still_ entitled to replace it with a call to memcpy() or even
> > machine_restart() before sleeping with your mother and starting WW III.
> >
> > Granted, it probably _won't_ do any of those today, but you should know
> > better than to rely on that.
> >
> > What part of 'undefined behaviour' is so difficult for people to understand?
>
> I think it comes down to an expectation that if the behaviour is
> undefined, anything _could_ happen, but what should happen is that it
> should just be passed along to (in this case) strcpy un-modified.
gcc is allowed not to pass it anywhere. You may not second guess
optimizer. If it is not defined, it is not defined.
Imagine
strcpy(a, "xyzzy"+b);
if (b>16)
printf("foo");
. gcc is permitted to kill printf(), because if b<0 or b>16 behaviour is
undefined. So gcc may assume b<=16.
Quoting alan:
################################################################################
# What part of 'undefined behaviour' is so difficult for people to understand? #
################################################################################
Pavel
-- (about SSSCA) "I don't say this lightly. However, I really think that the U.S. no longer is classifiable as a democracy, but rather as a plutocracy." --hpa - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/