Re: Bug#630441: g++-4.6 miscompilation
Philip Ashmore <firstname.lastname@example.org> writes:
> "reference to a char *" should read "reference to a char * on the stack"
gcc does warn about obvious instances of this; do you know why it
doesn't in this case?
For instance in this case:
char *f ()
return strcpy (a, "hello");
It doesn't warn, I suppose because the call to strcpy hides the
connection between "a" and the return value.
However, arguably it _could_ detect this, because strcpy is actually
inlined -- and then removed entirely, presumably because it notices
that the copy target disappears before it's ever used.
So the resulting assembly code is the same as just "return a;"!
hmm, I wonder if this is worth a gcc bug report...
(clang trunk shows exactly the same behavior)
Yossarian was moved very deeply by the absolute simplicity of
this clause of Catch-22 and let out a respectful whistle.
"That's some catch, that Catch-22," he observed.
"It's the best there is," Doc Daneeka agreed.