diff options
Diffstat (limited to 'include/llvm/Support')
-rw-r--r-- | include/llvm/Support/ARMBuildAttributes.h | 2 | ||||
-rw-r--r-- | include/llvm/Support/DataExtractor.h | 2 | ||||
-rw-r--r-- | include/llvm/Support/GenericDomTree.h | 18 | ||||
-rw-r--r-- | include/llvm/Support/MemoryBuffer.h | 4 | ||||
-rw-r--r-- | include/llvm/Support/SmallVectorMemoryBuffer.h | 4 | ||||
-rw-r--r-- | include/llvm/Support/TargetOpcodes.def | 5 | ||||
-rw-r--r-- | include/llvm/Support/xxhash.h | 2 |
7 files changed, 23 insertions, 14 deletions
diff --git a/include/llvm/Support/ARMBuildAttributes.h b/include/llvm/Support/ARMBuildAttributes.h index 6c83e447cb24..b8a03765a7c0 100644 --- a/include/llvm/Support/ARMBuildAttributes.h +++ b/include/llvm/Support/ARMBuildAttributes.h @@ -213,6 +213,8 @@ enum { // Tag_ABI_VFP_args, (=28), uleb128 BaseAAPCS = 0, HardFPAAPCS = 1, + ToolChainFPPCS = 2, + CompatibleFPAAPCS = 3, // Tag_FP_HP_extension, (=36), uleb128 AllowHPFP = 1, // Allow use of Half Precision FP diff --git a/include/llvm/Support/DataExtractor.h b/include/llvm/Support/DataExtractor.h index 3a6ada6c77df..2b1639856e79 100644 --- a/include/llvm/Support/DataExtractor.h +++ b/include/llvm/Support/DataExtractor.h @@ -15,7 +15,7 @@ namespace llvm { -/// An auxiliary type to facilitate extraction of 3-byte entities. +/// An auxiliary type to facilitate extraction of 3-byte entities. struct Uint24 { uint8_t Bytes[3]; Uint24(uint8_t U) { diff --git a/include/llvm/Support/GenericDomTree.h b/include/llvm/Support/GenericDomTree.h index 115abc23e2c6..c716e4a4d300 100644 --- a/include/llvm/Support/GenericDomTree.h +++ b/include/llvm/Support/GenericDomTree.h @@ -530,11 +530,10 @@ protected: /// CFG about its children and inverse children. This implies that deletions /// of CFG edges must not delete the CFG nodes before calling this function. /// - /// Batch updates should be generally faster when performing longer sequences - /// of updates than calling insertEdge/deleteEdge manually multiple times, as - /// it can reorder the updates and remove redundant ones internally. - /// The batch updater is also able to detect sequences of zero and exactly one - /// update -- it's optimized to do less work in these cases. + /// The applyUpdates function can reorder the updates and remove redundant + /// ones internally. The batch updater is also able to detect sequences of + /// zero and exactly one update -- it's optimized to do less work in these + /// cases. /// /// Note that for postdominators it automatically takes care of applying /// updates on reverse edges internally (so there's no need to swap the @@ -854,10 +853,15 @@ protected: assert(isReachableFromEntry(B)); assert(isReachableFromEntry(A)); + const unsigned ALevel = A->getLevel(); const DomTreeNodeBase<NodeT> *IDom; - while ((IDom = B->getIDom()) != nullptr && IDom != A && IDom != B) + + // Don't walk nodes above A's subtree. When we reach A's level, we must + // either find A or be in some other subtree not dominated by A. + while ((IDom = B->getIDom()) != nullptr && IDom->getLevel() >= ALevel) B = IDom; // Walk up the tree - return IDom != nullptr; + + return B == A; } /// Wipe this tree's state without releasing any resources. diff --git a/include/llvm/Support/MemoryBuffer.h b/include/llvm/Support/MemoryBuffer.h index 535579ecff53..8933295d4ea4 100644 --- a/include/llvm/Support/MemoryBuffer.h +++ b/include/llvm/Support/MemoryBuffer.h @@ -43,7 +43,6 @@ class MemoryBuffer { const char *BufferStart; // Start of the buffer. const char *BufferEnd; // End of the buffer. - protected: MemoryBuffer() = default; @@ -148,9 +147,6 @@ public: virtual BufferKind getBufferKind() const = 0; MemoryBufferRef getMemBufferRef() const; - -private: - virtual void anchor(); }; /// This class is an extension of MemoryBuffer, which allows copy-on-write diff --git a/include/llvm/Support/SmallVectorMemoryBuffer.h b/include/llvm/Support/SmallVectorMemoryBuffer.h index f43c2fb8f826..c4a600e7f37d 100644 --- a/include/llvm/Support/SmallVectorMemoryBuffer.h +++ b/include/llvm/Support/SmallVectorMemoryBuffer.h @@ -49,6 +49,9 @@ public: init(this->SV.begin(), this->SV.end(), false); } + // Key function. + ~SmallVectorMemoryBuffer() override; + StringRef getBufferIdentifier() const override { return BufferName; } BufferKind getBufferKind() const override { return MemoryBuffer_Malloc; } @@ -56,7 +59,6 @@ public: private: SmallVector<char, 0> SV; std::string BufferName; - void anchor() override; }; } // namespace llvm diff --git a/include/llvm/Support/TargetOpcodes.def b/include/llvm/Support/TargetOpcodes.def index 21f5c7e709b8..63491a5f01d2 100644 --- a/include/llvm/Support/TargetOpcodes.def +++ b/include/llvm/Support/TargetOpcodes.def @@ -470,12 +470,15 @@ HANDLE_TARGET_OPCODE(G_BSWAP) /// Generic AddressSpaceCast. HANDLE_TARGET_OPCODE(G_ADDRSPACE_CAST) +/// Generic block address +HANDLE_TARGET_OPCODE(G_BLOCK_ADDR) + // TODO: Add more generic opcodes as we move along. /// Marker for the end of the generic opcode. /// This is used to check if an opcode is in the range of the /// generic opcodes. -HANDLE_TARGET_OPCODE_MARKER(PRE_ISEL_GENERIC_OPCODE_END, G_ADDRSPACE_CAST) +HANDLE_TARGET_OPCODE_MARKER(PRE_ISEL_GENERIC_OPCODE_END, G_BLOCK_ADDR) /// BUILTIN_OP_END - This must be the last enum value in this list. /// The target-specific post-isel opcode values start here. diff --git a/include/llvm/Support/xxhash.h b/include/llvm/Support/xxhash.h index f7ca460188a2..6fd67ff9ce1c 100644 --- a/include/llvm/Support/xxhash.h +++ b/include/llvm/Support/xxhash.h @@ -38,10 +38,12 @@ #ifndef LLVM_SUPPORT_XXHASH_H #define LLVM_SUPPORT_XXHASH_H +#include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/StringRef.h" namespace llvm { uint64_t xxHash64(llvm::StringRef Data); +uint64_t xxHash64(llvm::ArrayRef<uint8_t> Data); } #endif |