On Tue, Oct 16, 2018 at 01:19:52PM +0200, Felix Fietkau wrote:
> > I have no idea how this could be related. But I think I found
> > somewhat reasonable explenation where the problem is.
> > I think below code :
> >
> > if (a || b || c) {
> > CODE1();
> > } else if (c) {
> > CODE2();
> > }
> >
> > can not be deterministic and can be compiled differently depending
> > on compiler version and used options. Sometimes it could result
> > in this
> >
> > if (a || b || c) {
> > CODE1();
> > }
> >
> > and sometimes in this:
> >
> > if (a || b) {
> > CODE1();
> > } else if (c) {
> > CODE2();
> > }
> >
> > So that would explain the problems you see. And indeed patch
> > could cause regression on systems where second variant of
> > initalizing RT6352 registers was used.
> I don't see how that can be non-deterministic at all. The 'else if' part
> can only be hit if the first if did not match.
I meant non-deterministic during compilation process, when compiler
do or do not some optimizations or if compiler version differs.
Regards
Stanislaw