NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: port-hp300/50852: src/sys/arch/hp300/stand/common/ite.c:239: bad expression



On Fri, Feb 26, 2016 at 10:55:00AM +0000, dcb314%hotmail.com@localhost wrote:
> >Description:
> [src/sys/arch/hp300/stand/common/ite.c:239]: (error) Expression 'whichconsole=++whichconsole%(NITE+1)' depends on order of evaluation of side effects
> 
> Source code is
> 
>    whichconsole = ++whichconsole % (NITE+1);
> 
> Maybe better code
> 
>    whichconsole = (whichconsole + 1) % (NITE+1);

Independent of the question of which code is better, I don't think the
error is correct. The location of the assignment (whichconsole) is not
changed by the right operand of the =, so the evaluation of the left and
right operand is invariant under evaluation order of the side effect.
The side effect of *updating* whichconsole as part of the assignment is
sequenced *after* the evaluation of the right operand (6.5.16 (3)
sentence 4. As such, the value here is perfectly well defined according
to the standard. This is quite different from an expression like
    *(++p) = *(++p); 

Joerg


Home | Main Index | Thread Index | Old Index