diff options
| author | Daniel Neilson <dneilson@azul.com> | 2018-02-09 23:33:35 +0000 |
|---|---|---|
| committer | Daniel Neilson <dneilson@azul.com> | 2018-02-09 23:33:35 +0000 |
| commit | f4fa26f5d84fdf1f045ad2070dfb128318ead8e9 (patch) | |
| tree | 2623648767b15dcc264f345a7a7b25bada41d017 /llvm/lib | |
| parent | fedb01603c66fe662ecab2c51e3fe4deb8544bf6 (diff) | |
| download | bcm5719-llvm-f4fa26f5d84fdf1f045ad2070dfb128318ead8e9.tar.gz bcm5719-llvm-f4fa26f5d84fdf1f045ad2070dfb128318ead8e9.zip | |
[Hexagon] Update uses of deprecated IRBuilder CreateMemCpy/Move calls
Summary:
This change is part of step five in the series of changes to remove alignment argument from
memcpy/memmove/memset in favour of alignment attributes. In particular, this changes the
Hexagon LoopIdiom pass to cease using the old IRBuilder createMemCpy/createMemMove
single-alignment APIs in favour of the new API that allows setting source and
destination alignments independently.
Steps:
Step 1) Remove alignment parameter and create alignment parameter attributes for
memcpy/memmove/memset. ( rL322965, rC322964, rL322963 )
Step 2) Expand the IRBuilder API to allow creation of memcpy/memmove with differing
source and dest alignments. ( rL323597 )
Step 3) Update Clang to use the new IRBuilder API. ( rC323617 )
Step 4) Update Polly to use the new IRBuilder API. ( rL323618 )
Step 5) Update LLVM passes that create memcpy/memmove calls to use the new IRBuilder API,
and those that use use MemIntrinsicInst::[get|set]Alignment() to use [get|set]DestAlignment()
and [get|set]SourceAlignment() instead. ( rL323886, rL323891, rL324148, rL324273, rL324278,
rL324384, rL324395, rL324402, rL324626, rL324642, rL324653, rL324654, rL324773, rL324774,
rL324781 )
Step 6) Remove the single-alignment IRBuilder API for memcpy/memmove, and the
MemIntrinsicInst::[get|set]Alignment() methods.
Reference
http://lists.llvm.org/pipermail/llvm-dev/2015-August/089384.html
http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20151109/312083.html
llvm-svn: 324784
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/llvm/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp b/llvm/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp index eca2bb6573e..581daca13d6 100644 --- a/llvm/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp +++ b/llvm/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp @@ -2138,7 +2138,6 @@ CleanupAndExit: // pointer size if it isn't already. LLVMContext &Ctx = SI->getContext(); BECount = SE->getTruncateOrZeroExtend(BECount, IntPtrTy); - unsigned Alignment = std::min(SI->getAlignment(), LI->getAlignment()); DebugLoc DLoc = SI->getDebugLoc(); const SCEV *NumBytesS = @@ -2272,12 +2271,14 @@ CleanupAndExit: : CondBuilder.CreateBitCast(LoadBasePtr, Int32PtrTy); NewCall = CondBuilder.CreateCall(Fn, {Op0, Op1, NumWords}); } else { - NewCall = CondBuilder.CreateMemMove(StoreBasePtr, LoadBasePtr, - NumBytes, Alignment); + NewCall = CondBuilder.CreateMemMove(StoreBasePtr, SI->getAlignment(), + LoadBasePtr, LI->getAlignment(), + NumBytes); } } else { - NewCall = Builder.CreateMemCpy(StoreBasePtr, LoadBasePtr, - NumBytes, Alignment); + NewCall = Builder.CreateMemCpy(StoreBasePtr, SI->getAlignment(), + LoadBasePtr, LI->getAlignment(), + NumBytes); // Okay, the memcpy has been formed. Zap the original store and // anything that feeds into it. RecursivelyDeleteTriviallyDeadInstructions(SI, TLI); |

