optimization/7189: gcc -O2 -Wall does not print ``control reaches end of non-void function'' warning

Richard Henderson rth@redhat.com
Sat Mar 1 00:29:00 GMT 2003


On Thu, Feb 13, 2003 at 10:04:14PM +0100, Steven Bosscher wrote:
> One way to "fix" this bug is to move check_function_return_warnings() up
> to before sibling call optimization in toplev.c, but maybe there's a
> more correct fix?

I don't really like doing this earlier.  To get correct results
we'd have to do an extra DCE pass, which seems wasteful wrt 
compile-time for a warning.

We should be able to detect this by looking at (1) predecessors
of the EXIT block, (2) noticing that they end in a call_insn 
with SIBLING_CALL_P set, and (3) noticing that the return value
embedded in the call_insn is correct for the return value of
the function.


r~



More information about the Gcc-bugs mailing list