Tobias Ringström <tobias@xxxxxxxxx> writes: > struct dev_t { > volatile unsigned R0; > volatile unsigned R1; > }; > Note how the moveq/movne pairs always load the same value. If equal > load 5120 else load 5120. Also note that it loads the addresses every > iteration instead of just once before the (unrolled) loop. > > It's also pointlessly reloading the value of *d ("[r0]") to r3 every > time, which is a regression from 4.4.3, and the root of my primary > performance regression. > > Should I file zero, one or two bugs about this? This is presumably happening because of the volatile declarations. One bug report should suffice. Thanks. Ian