diff options
Diffstat (limited to 'llvm/lib/Target/ARM/ARMCodeGenPrepare.cpp')
-rw-r--r-- | llvm/lib/Target/ARM/ARMCodeGenPrepare.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/ARMCodeGenPrepare.cpp b/llvm/lib/Target/ARM/ARMCodeGenPrepare.cpp index 296a22fa45a..7601680134e 100644 --- a/llvm/lib/Target/ARM/ARMCodeGenPrepare.cpp +++ b/llvm/lib/Target/ARM/ARMCodeGenPrepare.cpp @@ -582,6 +582,11 @@ bool ARMCodeGenPrepare::TryToPromote(Value *V) { if (CurrentVisited.count(V)) return true; + // Ignore GEPs because they don't need promoting and the constant indices + // will prevent the transformation. + if (isa<GetElementPtrInst>(V)) + return true; + if (!isSupportedValue(V) || (shouldPromote(V) && !isLegalToPromote(V))) { LLVM_DEBUG(dbgs() << "ARM CGP: Can't handle: " << *V << "\n"); return false; |