Micha Nelissen schrieb:
> Peter Vreman wrote:
>> There is a good reason for that the unreachable code is a warning: The
>> compiler _changes_ your
>> code by removing the if-branch. When it is a hint the compiler only
>> has recognized a pattern, but
>> it does not modify anything.
> 
> It "changes" it, but semantically it's the same right?
> 
> In your reasoning, the compiler should also emit a warning when it does

There were enough other reasons.

> (or would do) common subexpression extraction.

Anyways, gcc warns similiar, even two times ;):

~> cat test.c
int f(unsigned char c)
{
  if (c<0 || c>255)
    return 1;
  return 0;
}
~> gcc -c test.c
test.c: In function ‘f’:
test.c:3: warning: comparison is always false due to limited range of
data type
test.c:3: warning: comparison is always false due to limited range of
data type

So I guess the warning stays. We can discuss some extensions which makes
it easier to code such restrictions like merging parts of the tue branch.
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to