4 ms·
From what I can tell, the issue is that GCC9 stores the result of a pointer dereference in a register to reuse on each loop operation but the loop operation nee
by zaarn 7y ago
From what I can tell, the issue is that GCC9 stores the result of a pointer dereference in a register to reuse on each loop operation but the loop operation needs to dereference the pointer each time to work correctly.
- Asooka 7y agoSounds like it needs to be volatile then, or rather whatever atomic memory read the kernel has.
- zaarn 7y agoProbably volatile. Likely doesn't need to be atomic, just needs to prevent the compiler from optimizing the code into bugs.
- asveikau 7y agoNo, it sounds like it needs the kernel not to corrupt the value. There is nothing wrong with leaving the value in the register.
- wahern 7y agoI believe the aforementioned pointer caching is in the kernel--it's the pointer to the FP register state which is cached across preemption points in the kernel.
- asveikau 7y agoOk I see, that's a good point. Was not spelled out this well in the bug tracker comment. (If it is now it wasn't when I read it.)