diff --git a/src/coreclr/jit/lower.cpp b/src/coreclr/jit/lower.cpp index ed71bb09c4aa56..b111d73db6a995 100644 --- a/src/coreclr/jit/lower.cpp +++ b/src/coreclr/jit/lower.cpp @@ -4906,7 +4906,7 @@ bool Lowering::TryCreateAddrMode(GenTree* addr, bool isContainable, GenTree* par } #ifdef TARGET_ARM64 - if (parent->OperIsIndir() && parent->AsIndir()->IsVolatile()) + if (parent->OperIsIndir() && parent->AsIndir()->IsVolatile() && !varTypeIsGC(addr)) { // For Arm64 we avoid using LEA for volatile INDs // because we won't be able to use ldar/star