Hi David, On 4/4/22 11:50, David Laight wrote: >> >> > while (pwrpriv->bInSuspend && >> >> I've looked into what gcc11 produced from this function and looks like >> my compiler is smart enough to not cache that value, but I am afraid not >> all compilers are that smart. > > The compiler can't cache the value because of the function call. > Hm, I am a newbie in compilers, so can you, please, explain (or give a link to any resource where I can read about it) how function call here prevent caching. IIUC compiler generates code that works well in scope of single-threaded application, so why can't compiler cache that value instead of accessing memory on each iteration... Isn't register access a way faster than even cache hit? Thanks! With regards, Pavel Skripkin