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