yxsamliu wrote: Could the volatile guard also cover a load reached through another GEP? It currently checks only direct users of the first GEP, so the extra GEP hides the volatile load. https://github.com/llvm/llvm-project/pull/222466