Yes, you want the equivalent of `volatile` here so use `atomicLoad!(MemoryOrder.raw)`.
For example if getWeakRefTarget were inlined and pp were the address of a stack variable the compiler could deduce that `unlock` can't modify it. Same goes if someone marked `lock` or `unlock` as weakly pure.
I know these examples sound somewhat far-fetched but there is no benefit in saving [a few cycles](https://github.com/D-Programming-Language/druntime/blob/b59d85e9e9b3aaf78640d07d852c40f01fad9615/src/core/atomic.d#L945 "atomicLoad") here.