https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110437

--- Comment #12 from Jan Žižka <jan.zizka at nokia dot com> ---
(In reply to Xi Ruoyao from comment #11)
> is perfectly legal if the caller doesn't pass anything other than 1 or 42 to
> f.  So we cannot just reject it at the compile time, we can only issue a
> warning.

True that, still this doesn't make it sound software implementation :-)

Another example pointed out by one colleague of mine:

int f(int a)
{
  if (a == 1)
    exit(0);
  else
    return 0xbeef;
}

> And generally there is no way to determine if an "unsupported" value is
> passed to f at compile time because doing so will need to solve the halting
> problem.

That is true :-) but from software implementation if you reuse such a function
or it is a library I'd personally disallow this as this is bad coding. But this
will be opinionated so better not to dive to such a rabbit hole.

Thanks for comments.

Reply via email to