Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #35267

Re: Baby X

From Dr Nick <nospam-4@temporary-address.org.uk>
Newsgroups comp.lang.c
Subject Re: Baby X
References (12 earlier) <ku6pn4$tue$1@dont-email.me> <87bo54y28r.fsf@temporary-address.org.uk> <ku8fjm$juj$1@dont-email.me> <4bQNt.683$nK2.441@en-nntp-11.dc1.easynews.com> <lntxiwlz3c.fsf@nuthaus.mib.org>
Date 2013-08-12 07:42 +0100
Message-ID <8738qfwgu6.fsf@temporary-address.org.uk> (permalink)

Show all headers | View raw


Keith Thompson <kst-u@mib.org> writes:

> Richard Damon <Richard@Damon-Family.org> writes:
>> On 8/11/13 12:54 PM, James Kuyper wrote:
>>> It may be horrible, but I can't imagine that it was unintentional. I see
>>> no plausible reason for adding "and the value of the function call is
>>> used by the caller", except for the explicit purpose of allowing code
>>> like that. I've no idea why - the Rationale says nothing about that
>>> decision.
>>
>> There are several reasons I can think of. You can't require the compiler
>> to issue a diagnostic for falling off the end of the function without an
>> explicit return, because in general, this would require solving the
>> halting problem. The compiler can probably find a lot of cases, and it
>> can be a good point to issue a warning for a possible falling off the
>> end without a return (but is really annoying if it complains about no
>> return at the end of the function which is not reachable, especially if
>> another compiler you use will then complain about the unreachable return).
>
> You *could* require all possible execution paths for a non-void function
> to lead to a return statement.  C doesn't currently require that kind of
> compile-time analysis, but it's not all that difficult to do, and I
> think I've seen at least one language that requires it.
>
> So this:
>
>     int func(void) {
>         if (cond) {
>             return 1;
>         }
>     }
>
> would be a constraint violation, but this:
>
>     int func(void) {
>         if (cond) {
>             return 1;
>         }
>         else {
>             return 0;
>         }
>     }
>
> would be valid, since the compiler can prove that the closing } is never
> reached.  The compiler wouldn't be required to analyze the evaluation of
> "cond"; even if it's a constant expression, it would still check for
> returns on all paths.
>
> It's already entirely possible for a compiler to warn about such things.

Although it can't quite be done perfectly.  It's possible to imagine a
controlled loop with a conditional return in it where the conditions are
such that the return will always execute before the loop terminates (and
so the loop is effectively an endless loop although not coded as such).
In that case there doesn't need to be a return at the end of the
function but we can make the two clauses of ever increasing complexity
until the compiler has to give up.

Back to comp.lang.c | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Baby X Malcolm McLean <malcolm.mclean5@btinternet.com> - 2013-08-03 16:40 -0700
  Re: Baby X Jorgen Grahn <grahn+nntp@snipabacken.se> - 2013-08-04 06:04 +0000
    Re: Baby X "BartC" <bc@freeuk.com> - 2013-08-04 10:29 +0100
      Re: Baby X Malcolm McLean <malcolm.mclean5@btinternet.com> - 2013-08-04 02:53 -0700
        Re: Baby X Keith Thompson <kst-u@mib.org> - 2013-08-04 14:34 -0700
          Re: Baby X Malcolm McLean <malcolm.mclean5@btinternet.com> - 2013-08-05 04:36 -0700
            Re: Baby X Keith Thompson <kst-u@mib.org> - 2013-08-05 08:04 -0700
            Re: Baby X Ian Collins <ian-news@hotmail.com> - 2013-08-06 08:25 +1200
              Re: Baby X Malcolm McLean <malcolm.mclean5@btinternet.com> - 2013-08-06 04:38 -0700
                Re: Baby X Ian Collins <ian-news@hotmail.com> - 2013-08-07 07:19 +1200
                Re: Baby X Malcolm McLean <malcolm.mclean5@btinternet.com> - 2013-08-06 12:38 -0700
                Re: Baby X Ian Collins <ian-news@hotmail.com> - 2013-08-07 07:49 +1200
                Re: Baby X Malcolm McLean <malcolm.mclean5@btinternet.com> - 2013-08-06 15:17 -0700
                Re: Baby X Ben Bacarisse <ben.usenet@bsb.me.uk> - 2013-08-07 00:29 +0100
                Re: Baby X Ian Collins <ian-news@hotmail.com> - 2013-08-07 13:45 +1200
                Re: Baby X Malcolm McLean <malcolm.mclean5@btinternet.com> - 2013-08-07 03:22 -0700
                Re: Baby X James Kuyper <jameskuyper@verizon.net> - 2013-08-07 06:36 -0400
                Re: Baby X Dr Nick <nospam-4@temporary-address.org.uk> - 2013-08-10 20:04 +0100
                Re: Baby X Kelsey Bjarnason <kbjarnason@gmail.com> - 2013-08-09 17:28 +0000
                Re: Baby X Malcolm McLean <malcolm.mclean5@btinternet.com> - 2013-08-09 12:43 -0700
                Re: Baby X glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2013-08-09 20:01 +0000
                [OT] Re: Baby X Eric Sosman <esosman@comcast-dot-net.invalid> - 2013-08-09 16:30 -0400
                Re: Baby X Keith Thompson <kst-u@mib.org> - 2013-08-09 14:12 -0700
                Re: Baby X Dr Nick <nospam-4@temporary-address.org.uk> - 2013-08-10 20:11 +0100
                Re: Baby X Robert Wessel <robertwessel2@yahoo.com> - 2013-08-10 14:41 -0500
                Re: Baby X James Kuyper <jameskuyper@verizon.net> - 2013-08-10 21:34 -0400
                Re: Baby X Dr Nick <nospam-4@temporary-address.org.uk> - 2013-08-11 11:02 +0100
                Re: Baby X James Kuyper <jameskuyper@verizon.net> - 2013-08-11 12:54 -0400
                Re: Baby X Richard Damon <Richard@Damon-Family.org> - 2013-08-11 13:51 -0400
                Re: Baby X James Kuyper <jameskuyper@verizon.net> - 2013-08-11 14:10 -0400
                Re: Baby X Richard Damon <Richard@Damon-Family.org> - 2013-08-11 14:43 -0400
                Re: Baby X Keith Thompson <kst-u@mib.org> - 2013-08-11 14:03 -0700
                Re: Baby X Richard Damon <Richard@Damon-Family.org> - 2013-08-11 17:57 -0400
                Re: Baby X Keith Thompson <kst-u@mib.org> - 2013-08-11 18:37 -0700
                Re: Baby X glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2013-08-12 04:12 +0000
                Re: Baby X Dr Nick <nospam-4@temporary-address.org.uk> - 2013-08-12 07:42 +0100
                Re: Baby X Keith Thompson <kst-u@mib.org> - 2013-08-12 09:10 -0700
                Re: Baby X Philip Lantz <prl@canterey.us> - 2013-08-17 22:31 -0700
                Re: Baby X James Kuyper <jameskuyper@verizon.net> - 2013-08-18 14:50 -0400
                Re: Baby X Ike Naar <ike@iceland.freeshell.org> - 2013-08-18 20:15 +0000
                Re: Baby X James Kuyper <jameskuyper@verizon.net> - 2013-08-18 16:30 -0400
                Re: Baby X Ike Naar <ike@iceland.freeshell.org> - 2013-08-18 21:03 +0000
                Re: Baby X Ian Collins <ian-news@hotmail.com> - 2013-08-20 13:09 +1200
                Re: Baby X Phil Carmody <thefatphil_demunged@yahoo.co.uk> - 2013-08-20 12:24 +0300
                Re: Baby X Ben Bacarisse <ben.usenet@bsb.me.uk> - 2013-08-20 13:11 +0100
                Re: Baby X Keith Thompson <kst-u@mib.org> - 2013-08-20 08:33 -0700
                Re: Baby X Phil Carmody <thefatphil_demunged@yahoo.co.uk> - 2013-08-23 11:32 +0300
                Re: Baby X Ian Collins <ian-news@hotmail.com> - 2013-08-21 08:01 +1200
                Re: Baby X Keith Thompson <kst-u@mib.org> - 2013-08-11 13:57 -0700
                Re: Baby X James Kuyper <jameskuyper@verizon.net> - 2013-08-10 21:29 -0400
                Re: Baby X Malcolm McLean <malcolm.mclean5@btinternet.com> - 2013-08-10 22:04 -0700
                Re: Baby X Ike Naar <ike@iceland.freeshell.org> - 2013-08-09 20:16 +0000
                Re: Baby X Malcolm McLean <malcolm.mclean5@btinternet.com> - 2013-08-09 15:29 -0700
                Re: Baby X Ike Naar <ike@iceland.freeshell.org> - 2013-08-10 05:45 +0000
                Re: Baby X Malcolm McLean <malcolm.mclean5@btinternet.com> - 2013-08-10 03:18 -0700
                Re: Baby X Ike Naar <ike@iceland.freeshell.org> - 2013-08-10 17:02 +0000
                Re: Baby X Ike Naar <ike@ukato.freeshell.org> - 2013-08-06 21:00 +0000
                Re: Baby X Malcolm McLean <malcolm.mclean5@btinternet.com> - 2013-08-06 15:07 -0700
        Re: Baby X Ian Collins <ian-news@hotmail.com> - 2013-08-05 09:42 +1200
      Re: Baby X Roberto Waltman <usenet@rwaltman.com> - 2013-08-04 14:46 -0400
    Re: Baby X falk@rahul.net (Edward A. Falk) - 2013-08-15 03:02 +0000
      Re: Baby X falk@rahul.net (Edward A. Falk) - 2013-08-15 03:23 +0000
        Re: Baby X Malcolm McLean <malcolm.mclean5@btinternet.com> - 2013-08-15 06:09 -0700

csiph-web