diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/llvm/Analysis/AliasAnalysis.h | 2 | ||||
| -rw-r--r-- | include/llvm/CodeGen/SelectionDAG.h | 28 | ||||
| -rw-r--r-- | include/llvm/CodeGen/TargetLowering.h | 1 | ||||
| -rw-r--r-- | include/llvm/ExecutionEngine/Orc/LambdaResolver.h | 1 | ||||
| -rw-r--r-- | include/llvm/MC/MCContext.h | 13 | ||||
| -rw-r--r-- | include/llvm/Support/AArch64TargetParser.def | 58 | ||||
| -rw-r--r-- | include/llvm/Support/AArch64TargetParser.h | 2 | ||||
| -rw-r--r-- | include/llvm/Support/ARMTargetParser.h | 20 | ||||
| -rw-r--r-- | include/llvm/Transforms/Utils/BypassSlowDivision.h | 11 | 
9 files changed, 83 insertions, 53 deletions
diff --git a/include/llvm/Analysis/AliasAnalysis.h b/include/llvm/Analysis/AliasAnalysis.h index 948341554f23..282142f51bb3 100644 --- a/include/llvm/Analysis/AliasAnalysis.h +++ b/include/llvm/Analysis/AliasAnalysis.h @@ -949,7 +949,7 @@ template <typename DerivedT> class AAResultBase {    /// A pointer to the AAResults object that this AAResult is    /// aggregated within. May be null if not aggregated. -  AAResults *AAR; +  AAResults *AAR = nullptr;    /// Helper to dispatch calls back through the derived type.    DerivedT &derived() { return static_cast<DerivedT &>(*this); } diff --git a/include/llvm/CodeGen/SelectionDAG.h b/include/llvm/CodeGen/SelectionDAG.h index 12a970847021..45a598c898c8 100644 --- a/include/llvm/CodeGen/SelectionDAG.h +++ b/include/llvm/CodeGen/SelectionDAG.h @@ -269,7 +269,13 @@ class SelectionDAG {    using CallSiteInfo = MachineFunction::CallSiteInfo;    using CallSiteInfoImpl = MachineFunction::CallSiteInfoImpl; -  DenseMap<const SDNode *, CallSiteInfo> SDCallSiteInfo; + +  struct CallSiteDbgInfo { +    CallSiteInfo CSInfo; +    MDNode *HeapAllocSite = nullptr; +  }; + +  DenseMap<const SDNode *, CallSiteDbgInfo> SDCallSiteDbgInfo;    uint16_t NextPersistentId = 0; @@ -1664,16 +1670,28 @@ public:    }    void addCallSiteInfo(const SDNode *CallNode, CallSiteInfoImpl &&CallInfo) { -    SDCallSiteInfo[CallNode] = std::move(CallInfo); +    SDCallSiteDbgInfo[CallNode].CSInfo = std::move(CallInfo);    }    CallSiteInfo getSDCallSiteInfo(const SDNode *CallNode) { -    auto I = SDCallSiteInfo.find(CallNode); -    if (I != SDCallSiteInfo.end()) -      return std::move(I->second); +    auto I = SDCallSiteDbgInfo.find(CallNode); +    if (I != SDCallSiteDbgInfo.end()) +      return std::move(I->second).CSInfo;      return CallSiteInfo();    } +  void addHeapAllocSite(const SDNode *Node, MDNode *MD) { +    SDCallSiteDbgInfo[Node].HeapAllocSite = MD; +  } + +  /// Return the HeapAllocSite type associated with the SDNode, if it exists. +  MDNode *getHeapAllocSite(const SDNode *Node) { +    auto It = SDCallSiteDbgInfo.find(Node); +    if (It == SDCallSiteDbgInfo.end()) +      return nullptr; +    return It->second.HeapAllocSite; +  } +  private:    void InsertNode(SDNode *N);    bool RemoveNodeFromCSEMaps(SDNode *N); diff --git a/include/llvm/CodeGen/TargetLowering.h b/include/llvm/CodeGen/TargetLowering.h index d5cca60bb1b2..ca7548cd8d6f 100644 --- a/include/llvm/CodeGen/TargetLowering.h +++ b/include/llvm/CodeGen/TargetLowering.h @@ -3665,6 +3665,7 @@ public:      C_Register,            // Constraint represents specific register(s).      C_RegisterClass,       // Constraint represents any of register(s) in class.      C_Memory,              // Memory constraint. +    C_Immediate,           // Requires an immediate.      C_Other,               // Something else.      C_Unknown              // Unsupported constraint.    }; diff --git a/include/llvm/ExecutionEngine/Orc/LambdaResolver.h b/include/llvm/ExecutionEngine/Orc/LambdaResolver.h index 855e31b33549..84cbc53b73a5 100644 --- a/include/llvm/ExecutionEngine/Orc/LambdaResolver.h +++ b/include/llvm/ExecutionEngine/Orc/LambdaResolver.h @@ -16,6 +16,7 @@  #include "llvm/ADT/STLExtras.h"  #include "llvm/ExecutionEngine/JITSymbol.h" +#include "llvm/ExecutionEngine/OrcV1Deprecation.h"  #include <memory>  namespace llvm { diff --git a/include/llvm/MC/MCContext.h b/include/llvm/MC/MCContext.h index 5c2124cc0d15..c40cd7c2c257 100644 --- a/include/llvm/MC/MCContext.h +++ b/include/llvm/MC/MCContext.h @@ -112,6 +112,9 @@ namespace llvm {      /// number of section symbols with the same name).      StringMap<bool, BumpPtrAllocator &> UsedNames; +    /// Keeps track of labels that are used in inline assembly. +    SymbolTable InlineAsmUsedLabelNames; +      /// The next ID to dole out to an unnamed assembler temporary symbol with      /// a given prefix.      StringMap<unsigned> NextID; @@ -377,6 +380,16 @@ namespace llvm {      /// APIs.      const SymbolTable &getSymbols() const { return Symbols; } +    /// isInlineAsmLabel - Return true if the name is a label referenced in +    /// inline assembly. +    MCSymbol *getInlineAsmLabel(StringRef Name) const { +      return InlineAsmUsedLabelNames.lookup(Name); +    } + +    /// registerInlineAsmLabel - Records that the name is a label referenced in +    /// inline assembly. +    void registerInlineAsmLabel(MCSymbol *Sym); +      /// @}      /// \name Section Management diff --git a/include/llvm/Support/AArch64TargetParser.def b/include/llvm/Support/AArch64TargetParser.def index e152f383b3ec..5cdf190a9f19 100644 --- a/include/llvm/Support/AArch64TargetParser.def +++ b/include/llvm/Support/AArch64TargetParser.def @@ -50,35 +50,35 @@ AARCH64_ARCH("armv8.5-a", ARMV8_5A, "8.5-A", "v8.5a",  #define AARCH64_ARCH_EXT_NAME(NAME, ID, FEATURE, NEGFEATURE)  #endif  // FIXME: This would be nicer were it tablegen -AARCH64_ARCH_EXT_NAME("invalid",   AArch64::AEK_INVALID,  nullptr,  nullptr) -AARCH64_ARCH_EXT_NAME("none",      AArch64::AEK_NONE,     nullptr,  nullptr) -AARCH64_ARCH_EXT_NAME("crc",       AArch64::AEK_CRC,      "+crc",   "-crc") -AARCH64_ARCH_EXT_NAME("lse",       AArch64::AEK_LSE,      "+lse",   "-lse") -AARCH64_ARCH_EXT_NAME("rdm",       AArch64::AEK_RDM,      "+rdm",   "-rdm") -AARCH64_ARCH_EXT_NAME("crypto",    AArch64::AEK_CRYPTO,   "+crypto","-crypto") -AARCH64_ARCH_EXT_NAME("sm4",       AArch64::AEK_SM4,      "+sm4",   "-sm4") -AARCH64_ARCH_EXT_NAME("sha3",      AArch64::AEK_SHA3,     "+sha3",  "-sha3") -AARCH64_ARCH_EXT_NAME("sha2",      AArch64::AEK_SHA2,     "+sha2",  "-sha2") -AARCH64_ARCH_EXT_NAME("aes",       AArch64::AEK_AES,      "+aes",   "-aes") -AARCH64_ARCH_EXT_NAME("dotprod",   AArch64::AEK_DOTPROD,  "+dotprod","-dotprod") -AARCH64_ARCH_EXT_NAME("fp",        AArch64::AEK_FP,       "+fp-armv8",  "-fp-armv8") -AARCH64_ARCH_EXT_NAME("simd",      AArch64::AEK_SIMD,     "+neon",  "-neon") -AARCH64_ARCH_EXT_NAME("fp16",      AArch64::AEK_FP16,     "+fullfp16",  "-fullfp16") -AARCH64_ARCH_EXT_NAME("fp16fml",   AArch64::AEK_FP16FML,  "+fp16fml", "-fp16fml") -AARCH64_ARCH_EXT_NAME("profile",   AArch64::AEK_PROFILE,  "+spe",  "-spe") -AARCH64_ARCH_EXT_NAME("ras",       AArch64::AEK_RAS,      "+ras",  "-ras") -AARCH64_ARCH_EXT_NAME("sve",       AArch64::AEK_SVE,      "+sve",  "-sve") -AARCH64_ARCH_EXT_NAME("sve2",      AArch64::AEK_SVE2,     "+sve2", "-sve2") -AARCH64_ARCH_EXT_NAME("sve2-aes",  AArch64::AEK_SVE2AES,  "+sve2-aes", "-sve2-aes") -AARCH64_ARCH_EXT_NAME("sve2-sm4",  AArch64::AEK_SVE2SM4,  "+sve2-sm4", "-sve2-sm4") -AARCH64_ARCH_EXT_NAME("sve2-sha3", AArch64::AEK_SVE2SHA3, "+sve2-sha3", "-sve2-sha3") -AARCH64_ARCH_EXT_NAME("bitperm",   AArch64::AEK_BITPERM,  "+bitperm", "-bitperm") -AARCH64_ARCH_EXT_NAME("rcpc",      AArch64::AEK_RCPC,     "+rcpc", "-rcpc") -AARCH64_ARCH_EXT_NAME("rng",       AArch64::AEK_RAND,     "+rand",  "-rand") -AARCH64_ARCH_EXT_NAME("memtag",    AArch64::AEK_MTE,      "+mte",   "-mte") -AARCH64_ARCH_EXT_NAME("ssbs",      AArch64::AEK_SSBS,     "+ssbs",  "-ssbs") -AARCH64_ARCH_EXT_NAME("sb",        AArch64::AEK_SB,       "+sb",    "-sb") -AARCH64_ARCH_EXT_NAME("predres",   AArch64::AEK_PREDRES,  "+predres", "-predres") +AARCH64_ARCH_EXT_NAME("invalid",      AArch64::AEK_INVALID,     nullptr,  nullptr) +AARCH64_ARCH_EXT_NAME("none",         AArch64::AEK_NONE,        nullptr,  nullptr) +AARCH64_ARCH_EXT_NAME("crc",          AArch64::AEK_CRC,         "+crc",   "-crc") +AARCH64_ARCH_EXT_NAME("lse",          AArch64::AEK_LSE,         "+lse",   "-lse") +AARCH64_ARCH_EXT_NAME("rdm",          AArch64::AEK_RDM,         "+rdm",   "-rdm") +AARCH64_ARCH_EXT_NAME("crypto",       AArch64::AEK_CRYPTO,      "+crypto","-crypto") +AARCH64_ARCH_EXT_NAME("sm4",          AArch64::AEK_SM4,         "+sm4",   "-sm4") +AARCH64_ARCH_EXT_NAME("sha3",         AArch64::AEK_SHA3,        "+sha3",  "-sha3") +AARCH64_ARCH_EXT_NAME("sha2",         AArch64::AEK_SHA2,        "+sha2",  "-sha2") +AARCH64_ARCH_EXT_NAME("aes",          AArch64::AEK_AES,         "+aes",   "-aes") +AARCH64_ARCH_EXT_NAME("dotprod",      AArch64::AEK_DOTPROD,     "+dotprod","-dotprod") +AARCH64_ARCH_EXT_NAME("fp",           AArch64::AEK_FP,          "+fp-armv8",  "-fp-armv8") +AARCH64_ARCH_EXT_NAME("simd",         AArch64::AEK_SIMD,        "+neon",  "-neon") +AARCH64_ARCH_EXT_NAME("fp16",         AArch64::AEK_FP16,        "+fullfp16",  "-fullfp16") +AARCH64_ARCH_EXT_NAME("fp16fml",      AArch64::AEK_FP16FML,     "+fp16fml", "-fp16fml") +AARCH64_ARCH_EXT_NAME("profile",      AArch64::AEK_PROFILE,     "+spe",  "-spe") +AARCH64_ARCH_EXT_NAME("ras",          AArch64::AEK_RAS,         "+ras",  "-ras") +AARCH64_ARCH_EXT_NAME("sve",          AArch64::AEK_SVE,         "+sve",  "-sve") +AARCH64_ARCH_EXT_NAME("sve2",         AArch64::AEK_SVE2,        "+sve2", "-sve2") +AARCH64_ARCH_EXT_NAME("sve2-aes",     AArch64::AEK_SVE2AES,     "+sve2-aes", "-sve2-aes") +AARCH64_ARCH_EXT_NAME("sve2-sm4",     AArch64::AEK_SVE2SM4,     "+sve2-sm4", "-sve2-sm4") +AARCH64_ARCH_EXT_NAME("sve2-sha3",    AArch64::AEK_SVE2SHA3,    "+sve2-sha3", "-sve2-sha3") +AARCH64_ARCH_EXT_NAME("sve2-bitperm", AArch64::AEK_SVE2BITPERM, "+sve2-bitperm", "-sve2-bitperm") +AARCH64_ARCH_EXT_NAME("rcpc",         AArch64::AEK_RCPC,        "+rcpc", "-rcpc") +AARCH64_ARCH_EXT_NAME("rng",          AArch64::AEK_RAND,        "+rand",  "-rand") +AARCH64_ARCH_EXT_NAME("memtag",       AArch64::AEK_MTE,         "+mte",   "-mte") +AARCH64_ARCH_EXT_NAME("ssbs",         AArch64::AEK_SSBS,        "+ssbs",  "-ssbs") +AARCH64_ARCH_EXT_NAME("sb",           AArch64::AEK_SB,          "+sb",    "-sb") +AARCH64_ARCH_EXT_NAME("predres",      AArch64::AEK_PREDRES,     "+predres", "-predres")  #undef AARCH64_ARCH_EXT_NAME  #ifndef AARCH64_CPU_NAME diff --git a/include/llvm/Support/AArch64TargetParser.h b/include/llvm/Support/AArch64TargetParser.h index 965d38535e74..a2d2cf32d715 100644 --- a/include/llvm/Support/AArch64TargetParser.h +++ b/include/llvm/Support/AArch64TargetParser.h @@ -53,7 +53,7 @@ enum ArchExtKind : unsigned {    AEK_SVE2AES =     1 << 24,    AEK_SVE2SM4 =     1 << 25,    AEK_SVE2SHA3 =    1 << 26, -  AEK_BITPERM =     1 << 27, +  AEK_SVE2BITPERM = 1 << 27,  };  enum class ArchKind { diff --git a/include/llvm/Support/ARMTargetParser.h b/include/llvm/Support/ARMTargetParser.h index 4b9070dea596..02d4c975129f 100644 --- a/include/llvm/Support/ARMTargetParser.h +++ b/include/llvm/Support/ARMTargetParser.h @@ -39,19 +39,13 @@ enum ArchExtKind : unsigned {    AEK_DSP =         1 << 10,    AEK_FP16 =        1 << 11,    AEK_RAS =         1 << 12, -  AEK_SVE =         1 << 13, -  AEK_DOTPROD =     1 << 14, -  AEK_SHA2    =     1 << 15, -  AEK_AES     =     1 << 16, -  AEK_FP16FML =     1 << 17, -  AEK_SB      =     1 << 18, -  AEK_SVE2 =        1 << 19, -  AEK_SVE2AES =     1 << 20, -  AEK_SVE2SM4 =     1 << 21, -  AEK_SVE2SHA3 =    1 << 22, -  AEK_BITPERM =     1 << 23, -  AEK_FP_DP   =     1 << 24, -  AEK_LOB     =     1 << 25, +  AEK_DOTPROD =     1 << 13, +  AEK_SHA2    =     1 << 14, +  AEK_AES     =     1 << 15, +  AEK_FP16FML =     1 << 16, +  AEK_SB      =     1 << 17, +  AEK_FP_DP   =     1 << 18, +  AEK_LOB     =     1 << 19,    // Unsupported extensions.    AEK_OS = 0x8000000,    AEK_IWMMXT = 0x10000000, diff --git a/include/llvm/Transforms/Utils/BypassSlowDivision.h b/include/llvm/Transforms/Utils/BypassSlowDivision.h index 471055921fa8..994b6ec9c229 100644 --- a/include/llvm/Transforms/Utils/BypassSlowDivision.h +++ b/include/llvm/Transforms/Utils/BypassSlowDivision.h @@ -19,6 +19,7 @@  #include "llvm/ADT/DenseMap.h"  #include "llvm/ADT/DenseMapInfo.h" +#include "llvm/IR/ValueHandle.h"  #include <cstdint>  namespace llvm { @@ -28,8 +29,8 @@ class Value;  struct DivRemMapKey {    bool SignedOp; -  Value *Dividend; -  Value *Divisor; +  AssertingVH<Value> Dividend; +  AssertingVH<Value> Divisor;    DivRemMapKey(bool InSignedOp, Value *InDividend, Value *InDivisor)        : SignedOp(InSignedOp), Dividend(InDividend), Divisor(InDivisor) {} @@ -50,8 +51,10 @@ template <> struct DenseMapInfo<DivRemMapKey> {    }    static unsigned getHashValue(const DivRemMapKey &Val) { -    return (unsigned)(reinterpret_cast<uintptr_t>(Val.Dividend) ^ -                      reinterpret_cast<uintptr_t>(Val.Divisor)) ^ +    return (unsigned)(reinterpret_cast<uintptr_t>( +                          static_cast<Value *>(Val.Dividend)) ^ +                      reinterpret_cast<uintptr_t>( +                          static_cast<Value *>(Val.Divisor))) ^             (unsigned)Val.SignedOp;    }  };  | 
