summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/NVPTX/NVPTXLowerAggrCopies.cpp
diff options
context:
space:
mode:
authorEli Bendersky <eliben@google.com>2015-07-17 16:42:33 +0000
committerEli Bendersky <eliben@google.com>2015-07-17 16:42:33 +0000
commitb09cfb51ca2bc0ed4a019cc46dd20223b966a577 (patch)
tree9e085719ff12556d00b4d068ca2e905ebec856df /llvm/lib/Target/NVPTX/NVPTXLowerAggrCopies.cpp
parent34389c8d781b584fe486e4bdd68c52f52998f938 (diff)
downloadbcm5719-llvm-b09cfb51ca2bc0ed4a019cc46dd20223b966a577.tar.gz
bcm5719-llvm-b09cfb51ca2bc0ed4a019cc46dd20223b966a577.zip
Use inbounds GEPs for memcpy and memset lowering
Follow-up on discussion in http://reviews.llvm.org/D11220 llvm-svn: 242542
Diffstat (limited to 'llvm/lib/Target/NVPTX/NVPTXLowerAggrCopies.cpp')
-rw-r--r--llvm/lib/Target/NVPTX/NVPTXLowerAggrCopies.cpp18
1 files changed, 10 insertions, 8 deletions
diff --git a/llvm/lib/Target/NVPTX/NVPTXLowerAggrCopies.cpp b/llvm/lib/Target/NVPTX/NVPTXLowerAggrCopies.cpp
index 91c872d709c..35298565e58 100644
--- a/llvm/lib/Target/NVPTX/NVPTXLowerAggrCopies.cpp
+++ b/llvm/lib/Target/NVPTX/NVPTXLowerAggrCopies.cpp
@@ -87,14 +87,15 @@ void convertMemCpyToLoop(Instruction *ConvertedInst, Value *SrcAddr,
// load from SrcAddr+LoopIndex
// TODO: we can leverage the align parameter of llvm.memcpy for more efficient
// word-sized loads and stores.
- Value *Element = LoopBuilder.CreateLoad(
- LoopBuilder.CreateGEP(LoopBuilder.getInt8Ty(), SrcAddr, LoopIndex),
- SrcIsVolatile);
+ Value *Element =
+ LoopBuilder.CreateLoad(LoopBuilder.CreateInBoundsGEP(
+ LoopBuilder.getInt8Ty(), SrcAddr, LoopIndex),
+ SrcIsVolatile);
// store at DstAddr+LoopIndex
- LoopBuilder.CreateStore(
- Element,
- LoopBuilder.CreateGEP(LoopBuilder.getInt8Ty(), DstAddr, LoopIndex),
- DstIsVolatile);
+ LoopBuilder.CreateStore(Element,
+ LoopBuilder.CreateInBoundsGEP(LoopBuilder.getInt8Ty(),
+ DstAddr, LoopIndex),
+ DstIsVolatile);
// The value for LoopIndex coming from backedge is (LoopIndex + 1)
Value *NewIndex =
@@ -225,7 +226,8 @@ void convertMemSetToLoop(Instruction *ConvertedInst, Value *DstAddr,
LoopIndex->addIncoming(ConstantInt::get(CopyLen->getType(), 0), OrigBB);
LoopBuilder.CreateStore(
- SetValue, LoopBuilder.CreateGEP(SetValue->getType(), DstAddr, LoopIndex),
+ SetValue,
+ LoopBuilder.CreateInBoundsGEP(SetValue->getType(), DstAddr, LoopIndex),
false);
Value *NewIndex =
OpenPOWER on IntegriCloud