diff options
Diffstat (limited to 'llvm/lib/Target')
| -rw-r--r-- | llvm/lib/Target/AMDGPU/AMDGPUPromoteAlloca.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUPromoteAlloca.cpp b/llvm/lib/Target/AMDGPU/AMDGPUPromoteAlloca.cpp index 134ade765eb..5222bed0d25 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUPromoteAlloca.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUPromoteAlloca.cpp @@ -552,6 +552,13 @@ bool AMDGPUPromoteAlloca::collectUsesWithPtrTypes( if (UseInst->getOpcode() == Instruction::PtrToInt) return false; + if (LoadInst *LI = dyn_cast_or_null<LoadInst>(UseInst)) { + if (LI->isVolatile()) + return false; + + continue; + } + if (StoreInst *SI = dyn_cast<StoreInst>(UseInst)) { if (SI->isVolatile()) return false; @@ -559,9 +566,6 @@ bool AMDGPUPromoteAlloca::collectUsesWithPtrTypes( // Reject if the stored value is not the pointer operand. if (SI->getPointerOperand() != Val) return false; - } else if (LoadInst *LI = dyn_cast_or_null<LoadInst>(UseInst)) { - if (LI->isVolatile()) - return false; } else if (AtomicRMWInst *RMW = dyn_cast_or_null<AtomicRMWInst>(UseInst)) { if (RMW->isVolatile()) return false; |

