Philip Ashmore <cont...@philipashmore.com> 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:

   #include <string.h>
   char *f ()
   {
     char a[10];
     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)

-miles

-- 
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.


-- 
To UNSUBSCRIBE, email to debian-gcc-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/87obya1nv3....@catnip.gol.com

Reply via email to