summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Neilson <dneilson@azul.com>2018-03-23 14:25:35 +0000
committerDaniel Neilson <dneilson@azul.com>2018-03-23 14:25:35 +0000
commita0c5f3eff172f515ab579193fa4099e9141ef46b (patch)
tree7b91eb688bcad9bd0804a55c1839c428599e805c
parent6c289a1c744802c317986989915cc328d25c210d (diff)
downloadbcm5719-llvm-a0c5f3eff172f515ab579193fa4099e9141ef46b.tar.gz
bcm5719-llvm-a0c5f3eff172f515ab579193fa4099e9141ef46b.zip
Remove the deprecated single-alignment IRBuilder API for memcpy/memmove (NFC)
Summary: This change is part of step six in the series of changes to remove the alignment argument from memcpy/memmove/memset in favour of alignment attributes. At this point all users of the IRBuilder APIs for creating a memcpy/memmove call given a single value for alignment have been updated. We want to discourage usage of these old APIs in favour of the newer ones that allow for separate source and destination alignments, so this patch deletes the old API. Specifically, we remove from IRBuilder: CallInst *CreateMemCpy(Value *Dst, Value *Src, uint64_t Size, unsigned Align, bool isVolatile = false, MDNode *TBAATag = nullptr, MDNode *TBAAStructTag = nullptr, MDNode *ScopeTag = nullptr, MDNode *NoAliasTag = nullptr) CallInst *CreateMemCpy(Value *Dst, Value *Src, Value *Size, unsigned Align, bool isVolatile = false, MDNode *TBAATag = nullptr, MDNode *TBAAStructTag = nullptr, MDNode *ScopeTag = nullptr, MDNode *NoAliasTag = nullptr) CallInst *CreateMemMove(Value *Dst, Value *Src, uint64_t Size, unsigned Align, bool isVolatile = false, MDNode *TBAATag = nullptr, MDNode *ScopeTag = nullptr, MDNode *NoAliasTag = nullptr) CallInst *CreateMemMove(Value *Dst, Value *Src, Value *Size, unsigned Align, bool isVolatile = false, MDNode *TBAATag = nullptr, MDNode *ScopeTag = nullptr, MDNode *NoAliasTag = nullptr) 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, rL324784, rL324955, rL324960, rL325816, rL327398, rL327421, rL328097 ) 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: 328317
-rw-r--r--llvm/include/llvm/IR/IRBuilder.h36
1 files changed, 0 insertions, 36 deletions
diff --git a/llvm/include/llvm/IR/IRBuilder.h b/llvm/include/llvm/IR/IRBuilder.h
index ac6edd630d6..12b9af4f026 100644
--- a/llvm/include/llvm/IR/IRBuilder.h
+++ b/llvm/include/llvm/IR/IRBuilder.h
@@ -438,25 +438,6 @@ public:
MDNode *ScopeTag = nullptr,
MDNode *NoAliasTag = nullptr);
- // TODO: Old API. Remove this when no longer used.
- CallInst *CreateMemCpy(Value *Dst, Value *Src, uint64_t Size, unsigned Align,
- bool isVolatile = false, MDNode *TBAATag = nullptr,
- MDNode *TBAAStructTag = nullptr,
- MDNode *ScopeTag = nullptr,
- MDNode *NoAliasTag = nullptr) {
- return CreateMemCpy(Dst, Align, Src, Align, getInt64(Size), isVolatile, TBAATag,
- TBAAStructTag, ScopeTag, NoAliasTag);
- }
- // TODO: Old API. Remove this when no longer used.
- CallInst *CreateMemCpy(Value *Dst, Value *Src, Value *Size, unsigned Align,
- bool isVolatile = false, MDNode *TBAATag = nullptr,
- MDNode *TBAAStructTag = nullptr,
- MDNode *ScopeTag = nullptr,
- MDNode *NoAliasTag = nullptr) {
- return CreateMemCpy(Dst, Align, Src, Align, Size, isVolatile, TBAATag,
- TBAAStructTag, ScopeTag, NoAliasTag);
- }
-
/// \brief Create and insert an element unordered-atomic memcpy between the
/// specified pointers.
///
@@ -500,23 +481,6 @@ public:
MDNode *ScopeTag = nullptr,
MDNode *NoAliasTag = nullptr);
- // TODO: Old API. Remove this when no longer used.
- CallInst *CreateMemMove(Value *Dst, Value *Src, uint64_t Size, unsigned Align,
- bool isVolatile = false, MDNode *TBAATag = nullptr,
- MDNode *ScopeTag = nullptr,
- MDNode *NoAliasTag = nullptr) {
- return CreateMemMove(Dst, Align, Src, Align, getInt64(Size), isVolatile,
- TBAATag, ScopeTag, NoAliasTag);
- }
- // TODO: Old API. Remove this when no longer used.
- CallInst *CreateMemMove(Value *Dst, Value *Src, Value *Size, unsigned Align,
- bool isVolatile = false, MDNode *TBAATag = nullptr,
- MDNode *ScopeTag = nullptr,
- MDNode *NoAliasTag = nullptr) {
- return CreateMemMove(Dst, Align, Src, Align, Size, isVolatile, TBAATag,
- ScopeTag, NoAliasTag);
- }
-
/// \brief Create a vector fadd reduction intrinsic of the source vector.
/// The first parameter is a scalar accumulator value for ordered reductions.
CallInst *CreateFAddReduce(Value *Acc, Value *Src);
OpenPOWER on IntegriCloud