diff options
Diffstat (limited to 'llvm/include')
41 files changed, 191 insertions, 80 deletions
diff --git a/llvm/include/llvm/ADT/DirectedGraph.h b/llvm/include/llvm/ADT/DirectedGraph.h index fb6b180..fe7c9e5 100644 --- a/llvm/include/llvm/ADT/DirectedGraph.h +++ b/llvm/include/llvm/ADT/DirectedGraph.h @@ -80,18 +80,6 @@ public: explicit DGNode(EdgeType &E) : Edges() { Edges.insert(&E); } DGNode() = default; - explicit DGNode(const DGNode<NodeType, EdgeType> &N) : Edges(N.Edges) {} - DGNode(DGNode<NodeType, EdgeType> &&N) : Edges(std::move(N.Edges)) {} - - DGNode<NodeType, EdgeType> &operator=(const DGNode<NodeType, EdgeType> &N) { - Edges = N.Edges; - return *this; - } - DGNode<NodeType, EdgeType> &operator=(const DGNode<NodeType, EdgeType> &&N) { - Edges = std::move(N.Edges); - return *this; - } - /// Static polymorphism: delegate implementation (via isEqualTo) to the /// derived class. friend bool operator==(const NodeType &M, const NodeType &N) { diff --git a/llvm/include/llvm/ADT/ImmutableSet.h b/llvm/include/llvm/ADT/ImmutableSet.h index 8b2425e..1b40dac 100644 --- a/llvm/include/llvm/ADT/ImmutableSet.h +++ b/llvm/include/llvm/ADT/ImmutableSet.h @@ -635,9 +635,7 @@ public: // if find a collision compare those trees by their contents. unsigned digest = TNew->computeDigest(); TreeTy *&entry = Cache[maskCacheIndex(digest)]; - do { - if (!entry) - break; + if (entry) { for (TreeTy *T = entry ; T != nullptr; T = T->next) { // Compare the Contents('T') with Contents('TNew') typename TreeTy::iterator TI = T->begin(), TE = T->end(); @@ -653,7 +651,6 @@ public: entry->prev = TNew; TNew->next = entry; } - while (false); entry = TNew; TNew->IsCanonicalized = true; diff --git a/llvm/include/llvm/Analysis/DDG.h b/llvm/include/llvm/Analysis/DDG.h index eb977fb..1c53291 100644 --- a/llvm/include/llvm/Analysis/DDG.h +++ b/llvm/include/llvm/Analysis/DDG.h @@ -96,7 +96,7 @@ public: RootDDGNode() : DDGNode(NodeKind::Root) {} RootDDGNode(const RootDDGNode &N) = delete; RootDDGNode(RootDDGNode &&N) : DDGNode(std::move(N)) {} - ~RootDDGNode() = default; + ~RootDDGNode() override = default; /// Define classof to be able to use isa<>, cast<>, dyn_cast<>, etc. static bool classof(const DDGNode *N) { @@ -114,7 +114,7 @@ public: SimpleDDGNode(Instruction &I); SimpleDDGNode(const SimpleDDGNode &N); SimpleDDGNode(SimpleDDGNode &&N); - ~SimpleDDGNode(); + ~SimpleDDGNode() override; SimpleDDGNode &operator=(const SimpleDDGNode &N) = default; @@ -176,7 +176,7 @@ public: PiBlockDDGNode(const PiNodeList &List); PiBlockDDGNode(const PiBlockDDGNode &N); PiBlockDDGNode(PiBlockDDGNode &&N); - ~PiBlockDDGNode(); + ~PiBlockDDGNode() override; PiBlockDDGNode &operator=(const PiBlockDDGNode &N) = default; @@ -318,7 +318,7 @@ public: : DDGBase(std::move(G)), DDGInfo(std::move(G)) {} DataDependenceGraph(Function &F, DependenceInfo &DI); DataDependenceGraph(Loop &L, LoopInfo &LI, DependenceInfo &DI); - ~DataDependenceGraph(); + ~DataDependenceGraph() override; /// If node \p N belongs to a pi-block return a pointer to the pi-block, /// otherwise return null. diff --git a/llvm/include/llvm/Analysis/InteractiveModelRunner.h b/llvm/include/llvm/Analysis/InteractiveModelRunner.h index 66473ae..cfa0506 100644 --- a/llvm/include/llvm/Analysis/InteractiveModelRunner.h +++ b/llvm/include/llvm/Analysis/InteractiveModelRunner.h @@ -51,7 +51,7 @@ public: Log->flush(); } - virtual ~InteractiveModelRunner(); + ~InteractiveModelRunner() override; private: void *evaluateUntyped() override; diff --git a/llvm/include/llvm/Analysis/MLInlineAdvisor.h b/llvm/include/llvm/Analysis/MLInlineAdvisor.h index cc4c482..d71fa55 100644 --- a/llvm/include/llvm/Analysis/MLInlineAdvisor.h +++ b/llvm/include/llvm/Analysis/MLInlineAdvisor.h @@ -33,7 +33,7 @@ public: GetModelRunner, std::function<bool(CallBase &)> GetDefaultAdvice); - virtual ~MLInlineAdvisor() = default; + ~MLInlineAdvisor() override = default; void onPassEntry(LazyCallGraph::SCC *SCC) override; void onPassExit(LazyCallGraph::SCC *SCC) override; @@ -105,7 +105,7 @@ class MLInlineAdvice : public InlineAdvice { public: MLInlineAdvice(MLInlineAdvisor *Advisor, CallBase &CB, OptimizationRemarkEmitter &ORE, bool Recommendation); - virtual ~MLInlineAdvice() = default; + ~MLInlineAdvice() override = default; void recordInliningImpl() override; void recordInliningWithCalleeDeletedImpl() override; diff --git a/llvm/include/llvm/Analysis/ReleaseModeModelRunner.h b/llvm/include/llvm/Analysis/ReleaseModeModelRunner.h index 641036d..ff423a9 100644 --- a/llvm/include/llvm/Analysis/ReleaseModeModelRunner.h +++ b/llvm/include/llvm/Analysis/ReleaseModeModelRunner.h @@ -106,7 +106,7 @@ public: assert(ResultIndex >= 0 && "Cannot find DecisionName in inlining model"); } - virtual ~ReleaseModeModelRunner() = default; + ~ReleaseModeModelRunner() override = default; static bool classof(const MLModelRunner *R) { return R->getKind() == MLModelRunner::Kind::Release; diff --git a/llvm/include/llvm/Analysis/StackSafetyAnalysis.h b/llvm/include/llvm/Analysis/StackSafetyAnalysis.h index 2966f0c..b7b816f 100644 --- a/llvm/include/llvm/Analysis/StackSafetyAnalysis.h +++ b/llvm/include/llvm/Analysis/StackSafetyAnalysis.h @@ -156,7 +156,7 @@ public: static char ID; StackSafetyGlobalInfoWrapperPass(); - ~StackSafetyGlobalInfoWrapperPass(); + ~StackSafetyGlobalInfoWrapperPass() override; const StackSafetyGlobalInfo &getResult() const { return SSGI; } diff --git a/llvm/include/llvm/DWARFCFIChecker/DWARFCFIFunctionFrameAnalyzer.h b/llvm/include/llvm/DWARFCFIChecker/DWARFCFIFunctionFrameAnalyzer.h index 03e93de..3895da2 100644 --- a/llvm/include/llvm/DWARFCFIChecker/DWARFCFIFunctionFrameAnalyzer.h +++ b/llvm/include/llvm/DWARFCFIChecker/DWARFCFIFunctionFrameAnalyzer.h @@ -32,7 +32,7 @@ class LLVM_ABI CFIFunctionFrameAnalyzer : public CFIFunctionFrameReceiver { public: CFIFunctionFrameAnalyzer(MCContext &Context, const MCInstrInfo &MCII) : CFIFunctionFrameReceiver(Context), MCII(MCII) {} - ~CFIFunctionFrameAnalyzer(); + ~CFIFunctionFrameAnalyzer() override; void startFunctionFrame(bool IsEH, ArrayRef<MCCFIInstruction> Prologue) override; diff --git a/llvm/include/llvm/DWARFLinker/Classic/DWARFStreamer.h b/llvm/include/llvm/DWARFLinker/Classic/DWARFStreamer.h index 03fc729..4ffef90 100644 --- a/llvm/include/llvm/DWARFLinker/Classic/DWARFStreamer.h +++ b/llvm/include/llvm/DWARFLinker/Classic/DWARFStreamer.h @@ -48,7 +48,7 @@ public: raw_pwrite_stream &OutFile, DWARFLinkerBase::MessageHandlerTy Warning) : OutFile(OutFile), OutFileType(OutFileType), WarningHandler(Warning) {} - virtual ~DwarfStreamer() = default; + ~DwarfStreamer() override = default; static Expected<std::unique_ptr<DwarfStreamer>> createStreamer( const Triple &TheTriple, DWARFLinkerBase::OutputFileType FileType, diff --git a/llvm/include/llvm/DWARFLinker/Parallel/DWARFLinker.h b/llvm/include/llvm/DWARFLinker/Parallel/DWARFLinker.h index 8046513..db60695 100644 --- a/llvm/include/llvm/DWARFLinker/Parallel/DWARFLinker.h +++ b/llvm/include/llvm/DWARFLinker/Parallel/DWARFLinker.h @@ -120,7 +120,7 @@ using SectionHandlerTy = class DWARFLinker : public DWARFLinkerBase { public: - virtual ~DWARFLinker() = default; + ~DWARFLinker() override = default; /// Creates dwarf linker instance. LLVM_ABI static std::unique_ptr<DWARFLinker> diff --git a/llvm/include/llvm/DebugInfo/PDB/PDBTypes.h b/llvm/include/llvm/DebugInfo/PDB/PDBTypes.h index a64a2e8..c919b5f 100644 --- a/llvm/include/llvm/DebugInfo/PDB/PDBTypes.h +++ b/llvm/include/llvm/DebugInfo/PDB/PDBTypes.h @@ -597,17 +597,10 @@ struct Variant { } // end namespace pdb } // end namespace llvm -namespace std { - -template <> struct hash<llvm::pdb::PDB_SymType> { - using argument_type = llvm::pdb::PDB_SymType; - using result_type = std::size_t; - - result_type operator()(const argument_type &Arg) const { +template <> struct std::hash<llvm::pdb::PDB_SymType> { + std::size_t operator()(const llvm::pdb::PDB_SymType &Arg) const { return std::hash<int>()(static_cast<int>(Arg)); } }; -} // end namespace std - #endif // LLVM_DEBUGINFO_PDB_PDBTYPES_H diff --git a/llvm/include/llvm/Debuginfod/BuildIDFetcher.h b/llvm/include/llvm/Debuginfod/BuildIDFetcher.h index f0ecea1..8f9c2aa 100644 --- a/llvm/include/llvm/Debuginfod/BuildIDFetcher.h +++ b/llvm/include/llvm/Debuginfod/BuildIDFetcher.h @@ -24,7 +24,7 @@ class DebuginfodFetcher : public object::BuildIDFetcher { public: DebuginfodFetcher(std::vector<std::string> DebugFileDirectories) : BuildIDFetcher(std::move(DebugFileDirectories)) {} - virtual ~DebuginfodFetcher() = default; + ~DebuginfodFetcher() override = default; /// Fetches the given Build ID using debuginfod and returns a local path to /// the resulting file. diff --git a/llvm/include/llvm/IR/DroppedVariableStatsIR.h b/llvm/include/llvm/IR/DroppedVariableStatsIR.h index 3e18256..9fc2319 100644 --- a/llvm/include/llvm/IR/DroppedVariableStatsIR.h +++ b/llvm/include/llvm/IR/DroppedVariableStatsIR.h @@ -71,13 +71,12 @@ private: StringRef PassLevel); /// Override base class method to run on an llvm::Function specifically. - virtual void - visitEveryInstruction(unsigned &DroppedCount, - DenseMap<VarID, DILocation *> &InlinedAtsMap, - VarID Var) override; + void visitEveryInstruction(unsigned &DroppedCount, + DenseMap<VarID, DILocation *> &InlinedAtsMap, + VarID Var) override; /// Override base class method to run on #dbg_values specifically. - virtual void visitEveryDebugRecord( + void visitEveryDebugRecord( DenseSet<VarID> &VarIDSet, DenseMap<StringRef, DenseMap<VarID, DILocation *>> &InlinedAtsMap, StringRef FuncName, bool Before) override; diff --git a/llvm/include/llvm/IR/IntrinsicsNVVM.td b/llvm/include/llvm/IR/IntrinsicsNVVM.td index c9df6c4..719181a 100644 --- a/llvm/include/llvm/IR/IntrinsicsNVVM.td +++ b/llvm/include/llvm/IR/IntrinsicsNVVM.td @@ -1866,6 +1866,73 @@ let IntrProperties = [IntrConvergent, IntrNoCallback] in { def int_nvvm_mbarrier_pending_count : NVVMBuiltin, Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem, IntrConvergent, IntrNoCallback]>; +// mbarrier.{expect_tx/complete_tx} +foreach op = ["expect_tx", "complete_tx"] in { + foreach scope = ["scope_cta", "scope_cluster"] in { + foreach space = ["space_cta", "space_cluster"] in { + defvar suffix = StrJoin<"_", [op, scope, space]>.ret; + defvar mbar_addr_ty = !if(!eq(space, "space_cta"), + llvm_shared_ptr_ty, llvm_shared_cluster_ptr_ty); + + def int_nvvm_mbarrier_ # suffix : + Intrinsic<[], [mbar_addr_ty, llvm_i32_ty], + [IntrConvergent, IntrArgMemOnly, IntrNoCallback]>; + } // space + } // scope +} // op + +// mbarrier.arrive and mbarrier.arrive.expect_tx +// mbarrier.arrive_drop and mbarrier.arrive_drop.expect_tx +foreach op = ["arrive", "arrive_expect_tx", + "arrive_drop", "arrive_drop_expect_tx"] in { + foreach scope = ["scope_cta", "scope_cluster"] in { + foreach space = ["space_cta", "space_cluster"] in { + defvar suffix = StrJoin<"_", [scope, space]>.ret; + defvar mbar_addr_ty = !if(!eq(space, "space_cta"), + llvm_shared_ptr_ty, llvm_shared_cluster_ptr_ty); + defvar args_ty = [mbar_addr_ty, // mbar_address_ptr + llvm_i32_ty]; // tx-count + + // mbarriers in shared_cluster space cannot return any value. + defvar mbar_ret_ty = !if(!eq(space, "space_cta"), + [llvm_i64_ty], []<LLVMType>); + + def int_nvvm_mbarrier_ # op # "_" # suffix: + Intrinsic<mbar_ret_ty, args_ty, + [IntrConvergent, IntrNoCallback]>; + def int_nvvm_mbarrier_ # op # "_relaxed_" # suffix : + Intrinsic<mbar_ret_ty, args_ty, + [IntrConvergent, IntrArgMemOnly, IntrNoCallback]>; + } // space + } // scope +} // op + +// mbarrier.{test_wait and try_wait} +foreach op = ["test_wait", "try_wait"] in { + foreach scope = ["scope_cta", "scope_cluster"] in { + foreach parity = [true, false] in { + foreach time_limit = !if(!eq(op, "try_wait"), [true, false], [false]) in { + defvar base_args = [llvm_shared_ptr_ty]; // mbar_ptr + defvar parity_args = !if(parity, [llvm_i32_ty], [llvm_i64_ty]); + defvar tl_args = !if(time_limit, [llvm_i32_ty], []<LLVMType>); + defvar args = !listconcat(base_args, parity_args, tl_args); + defvar tmp_op = StrJoin<"_", [op, + !if(parity, "parity", ""), + !if(time_limit, "tl", "")]>.ret; + defvar suffix = StrJoin<"_", [scope, "space_cta"]>.ret; + + def int_nvvm_mbarrier_ # tmp_op # "_" # suffix : + Intrinsic<[llvm_i1_ty], args, + [IntrConvergent, NoCapture<ArgIndex<0>>, IntrNoCallback]>; + def int_nvvm_mbarrier_ # tmp_op # "_relaxed_" # suffix : + Intrinsic<[llvm_i1_ty], args, + [IntrConvergent, NoCapture<ArgIndex<0>>, IntrNoCallback, + IntrArgMemOnly, IntrReadMem]>; + } // tl + } // parity + } // scope +} // op + // Generated within nvvm. Use for ldu on sm_20 or later. Second arg is the // pointer's alignment. let IntrProperties = [IntrReadMem, IntrArgMemOnly, IntrNoCallback, IntrWillReturn, NoCapture<ArgIndex<0>>] in { @@ -3000,4 +3067,4 @@ foreach sp = [0, 1] in { } } -} // let TargetPrefix = "nvvm"
\ No newline at end of file +} // let TargetPrefix = "nvvm" diff --git a/llvm/include/llvm/IR/OptBisect.h b/llvm/include/llvm/IR/OptBisect.h index d813ae9..a8cd56f 100644 --- a/llvm/include/llvm/IR/OptBisect.h +++ b/llvm/include/llvm/IR/OptBisect.h @@ -51,7 +51,7 @@ public: /// through LLVMContext. OptBisect() = default; - virtual ~OptBisect() = default; + ~OptBisect() override = default; /// Checks the bisect limit to determine if the specified pass should run. /// diff --git a/llvm/include/llvm/IR/RuntimeLibcalls.td b/llvm/include/llvm/IR/RuntimeLibcalls.td index ec16995..7be1b65 100644 --- a/llvm/include/llvm/IR/RuntimeLibcalls.td +++ b/llvm/include/llvm/IR/RuntimeLibcalls.td @@ -59,6 +59,11 @@ def ExceptionModelIsNotNone : RuntimeLibcallPredicate< [{ExceptionModel != ExceptionHandling::None}] >; +def ExceptionModelHasUnwindResume : RuntimeLibcallPredicate< + [{ExceptionModel != ExceptionHandling::None && + ExceptionModel != ExceptionHandling::SjLj}] +>; + def ExceptionModelIsSjLj : RuntimeLibcallPredicate< [{ExceptionModel == ExceptionHandling::SjLj}] >; @@ -1153,8 +1158,10 @@ def __ssp_canary_word : RuntimeLibcallImpl<STACK_CHECK_GUARD>; //===----------------------------------------------------------------------===// defvar ExceptionModelCalls = (add - LibcallImpls<(add DefaultExceptionHandlingLibcalls), + LibcallImpls<(add __cxa_end_cleanup), ExceptionModelIsNotNone>, + LibcallImpls<(add _Unwind_Resume), + ExceptionModelHasUnwindResume>, LibcallImpls<(add SjLjExceptionHandlingLibcalls), ExceptionModelIsSjLj> ); @@ -1396,8 +1403,10 @@ defset list<RuntimeLibcallImpl> WinArm64ECSjLjExceptionHandlingLibcalls = { } defvar ExceptionModelCallsArm64EC = (add - LibcallImpls<(add WinArm64ECDefaultExceptionHandlingLibcalls), + LibcallImpls<(add arm64ec___cxa_end_cleanup), ExceptionModelIsNotNone>, + LibcallImpls<(add arm64ec__Unwind_Resume), + ExceptionModelHasUnwindResume>, LibcallImpls<(add WinArm64ECSjLjExceptionHandlingLibcalls), ExceptionModelIsSjLj> ); @@ -1499,6 +1508,41 @@ def __aeabi_ddiv : RuntimeLibcallImpl<DIV_F64>; // CallingConv::ARM_AAPCS def __aeabi_dmul : RuntimeLibcallImpl<MUL_F64>; // CallingConv::ARM_AAPCS def __aeabi_dsub : RuntimeLibcallImpl<SUB_F64>; // CallingConv::ARM_AAPCS +defvar AEABIOverrides = [ + __eqsf2, __eqdf2, + __nesf2, __nedf2, + __ltsf2, __ltdf2, + __lesf2, __ledf2, + __gesf2, __gedf2, + __gtsf2, __gtdf2, + __unordsf2, __unorddf2, + + __addsf3, __adddf3, + __divsf3, __divdf3, + __mulsf3, __muldf3, + __subsf3, __subdf3, + + __fixdfsi, __fixunsdfsi, + __fixdfdi, __fixunsdfdi, + __fixsfsi, __fixunssfsi, + __fixsfdi, __fixunssfdi, + + __floatsidf, __floatunsidf, + __floatdidf, __floatundidf, + __floatsisf, __floatunsisf, + __floatdisf, __floatundisf, + + __muldi3, __ashldi3, + __lshrdi3, __ashrdi3, + + __divsi3, __udivsi3 + + // Half conversion cases are a mess and handled separately. + // __truncdfsf2, __truncdfhf2, + // __extendsfdf2, + // __truncsfhf2, __extendhfsf2 +]; + // Double-precision floating-point comparison helper functions // RTABI chapter 4.1.2, Table 3 def __aeabi_dcmpeq__oeq : RuntimeLibcallImpl<OEQ_F64, "__aeabi_dcmpeq">; // CallingConv::ARM_AAPCS, CmpInst::ICMP_NE @@ -1784,7 +1828,8 @@ def ARMSystemLibrary : SystemRuntimeLibrary<isARMOrThumb, (add (sub WinDefaultLibcallImpls, ARMLibgccHalfConvertCalls, GNUEABIHalfConvertCalls, - ARMDoubleToHalfCalls), + ARMDoubleToHalfCalls, + AEABIOverrides), LibcallImpls<(add __powisf2, __powidf2), isNotOSMSVCRT>, LibmHasFrexpF32, LibmHasLdexpF32, LibmHasFrexpF128, LibmHasLdexpF128, @@ -1803,6 +1848,11 @@ def ARMSystemLibrary GNUEABIHalfConvertCalls, ARMDoubleToHalfCalls, + LibcallImpls<(add AEABIOverrides), + RuntimeLibcallPredicate<[{ + (!hasAEABILibcalls(TT) || !isAAPCS_ABI(TT, ABIName)) && + !TT.isOSWindows() + }]>>, // Use divmod compiler-rt calls for iOS 5.0 and later. LibcallImpls<(add __divmodsi4, __udivmodsi4), RuntimeLibcallPredicate<[{TT.isOSBinFormatMachO() && @@ -2443,6 +2493,11 @@ def _aullrem : RuntimeLibcallImpl<UREM_I64>; def _allmul : RuntimeLibcallImpl<MUL_I64>; } +// FIXME: Should have utility function to filter by known provider. +defvar WindowsDivRemMulLibcallOverrides = [ + __divdi3, __udivdi3, __moddi3, __umoddi3, __muldi3 +]; + //===----------------------------------------------------------------------===// // X86 Runtime Libcalls //===----------------------------------------------------------------------===// @@ -2464,7 +2519,7 @@ defvar X86_F128_Libcalls = LibcallImpls<(add LibmF128Libcalls, LibmF128FiniteLib defvar SinCosF32F64Libcalls = LibcallImpls<(add sincosf, sincos), hasSinCos_f32_f64>; defvar X86CommonLibcalls = - (add WinDefaultLibcallImpls, + (add (sub WinDefaultLibcallImpls, WindowsDivRemMulLibcallOverrides), DarwinSinCosStret, DarwinExp10, X86_F128_Libcalls, LibmHasSinCosF80, // FIXME: Depends on long double @@ -2487,10 +2542,15 @@ defvar Windows32DivRemMulCalls = LibcallsWithCC<(add WindowsDivRemMulLibcalls), X86_STDCALL, RuntimeLibcallPredicate<"TT.isWindowsMSVCEnvironment() || TT.isWindowsItaniumEnvironment()">>; +defvar NotWindows32DivRemMulCalls = + LibcallImpls<(add WindowsDivRemMulLibcallOverrides), + RuntimeLibcallPredicate<"!TT.isWindowsMSVCEnvironment() && !TT.isWindowsItaniumEnvironment()">>; + def X86_32SystemLibrary : SystemRuntimeLibrary<isX86_32, (add X86CommonLibcalls, - Windows32DivRemMulCalls)>; + NotWindows32DivRemMulCalls, + Windows32DivRemMulCalls)>; def X86_64SystemLibrary : SystemRuntimeLibrary<isX86_64, diff --git a/llvm/include/llvm/MC/MCDXContainerWriter.h b/llvm/include/llvm/MC/MCDXContainerWriter.h index 44d2af3..9b6ba896 100644 --- a/llvm/include/llvm/MC/MCDXContainerWriter.h +++ b/llvm/include/llvm/MC/MCDXContainerWriter.h @@ -23,7 +23,7 @@ protected: MCDXContainerTargetWriter() {} public: - virtual ~MCDXContainerTargetWriter(); + ~MCDXContainerTargetWriter() override; Triple::ObjectFormatType getFormat() const override { return Triple::DXContainer; diff --git a/llvm/include/llvm/MC/MCELFObjectWriter.h b/llvm/include/llvm/MC/MCELFObjectWriter.h index a8b00aa..35614cb 100644 --- a/llvm/include/llvm/MC/MCELFObjectWriter.h +++ b/llvm/include/llvm/MC/MCELFObjectWriter.h @@ -62,7 +62,7 @@ protected: bool HasRelocationAddend_, uint8_t ABIVersion_ = 0); public: - virtual ~MCELFObjectTargetWriter() = default; + ~MCELFObjectTargetWriter() override = default; Triple::ObjectFormatType getFormat() const override { return Triple::ELF; } static bool classof(const MCObjectTargetWriter *W) { diff --git a/llvm/include/llvm/MC/MCGOFFObjectWriter.h b/llvm/include/llvm/MC/MCGOFFObjectWriter.h index 78a4915..ec07637 100644 --- a/llvm/include/llvm/MC/MCGOFFObjectWriter.h +++ b/llvm/include/llvm/MC/MCGOFFObjectWriter.h @@ -21,7 +21,7 @@ protected: MCGOFFObjectTargetWriter() = default; public: - virtual ~MCGOFFObjectTargetWriter() = default; + ~MCGOFFObjectTargetWriter() override = default; Triple::ObjectFormatType getFormat() const override { return Triple::GOFF; } diff --git a/llvm/include/llvm/MC/MCMachObjectWriter.h b/llvm/include/llvm/MC/MCMachObjectWriter.h index 41416a2..2163312b 100644 --- a/llvm/include/llvm/MC/MCMachObjectWriter.h +++ b/llvm/include/llvm/MC/MCMachObjectWriter.h @@ -48,7 +48,7 @@ protected: } public: - virtual ~MCMachObjectTargetWriter(); + ~MCMachObjectTargetWriter() override; Triple::ObjectFormatType getFormat() const override { return Triple::MachO; } static bool classof(const MCObjectTargetWriter *W) { diff --git a/llvm/include/llvm/MC/MCObjectStreamer.h b/llvm/include/llvm/MC/MCObjectStreamer.h index 1899cb6..d9aecd8 100644 --- a/llvm/include/llvm/MC/MCObjectStreamer.h +++ b/llvm/include/llvm/MC/MCObjectStreamer.h @@ -68,7 +68,7 @@ protected: MCObjectStreamer(MCContext &Context, std::unique_ptr<MCAsmBackend> TAB, std::unique_ptr<MCObjectWriter> OW, std::unique_ptr<MCCodeEmitter> Emitter); - ~MCObjectStreamer(); + ~MCObjectStreamer() override; public: /// state management diff --git a/llvm/include/llvm/MC/MCWasmObjectWriter.h b/llvm/include/llvm/MC/MCWasmObjectWriter.h index 3d5b094..9dd588d 100644 --- a/llvm/include/llvm/MC/MCWasmObjectWriter.h +++ b/llvm/include/llvm/MC/MCWasmObjectWriter.h @@ -27,7 +27,7 @@ protected: explicit MCWasmObjectTargetWriter(bool Is64Bit_, bool IsEmscripten); public: - virtual ~MCWasmObjectTargetWriter(); + ~MCWasmObjectTargetWriter() override; Triple::ObjectFormatType getFormat() const override { return Triple::Wasm; } static bool classof(const MCObjectTargetWriter *W) { diff --git a/llvm/include/llvm/MC/MCWinCOFFObjectWriter.h b/llvm/include/llvm/MC/MCWinCOFFObjectWriter.h index b11eacc..4a9cf9c 100644 --- a/llvm/include/llvm/MC/MCWinCOFFObjectWriter.h +++ b/llvm/include/llvm/MC/MCWinCOFFObjectWriter.h @@ -29,7 +29,7 @@ protected: MCWinCOFFObjectTargetWriter(unsigned Machine_); public: - virtual ~MCWinCOFFObjectTargetWriter() = default; + ~MCWinCOFFObjectTargetWriter() override = default; Triple::ObjectFormatType getFormat() const override { return Triple::COFF; } static bool classof(const MCObjectTargetWriter *W) { diff --git a/llvm/include/llvm/MCA/HardwareUnits/LSUnit.h b/llvm/include/llvm/MCA/HardwareUnits/LSUnit.h index 3700901..296a19c 100644 --- a/llvm/include/llvm/MCA/HardwareUnits/LSUnit.h +++ b/llvm/include/llvm/MCA/HardwareUnits/LSUnit.h @@ -57,7 +57,7 @@ public: LSUnitBase(const MCSchedModel &SM, unsigned LoadQueueSize, unsigned StoreQueueSize, bool AssumeNoAlias); - virtual ~LSUnitBase(); + ~LSUnitBase() override; /// Returns the total number of entries in the load queue. unsigned getLoadQueueSize() const { return LQSize; } @@ -465,19 +465,19 @@ public: /// 6. A store has to wait until an older store barrier is fully executed. unsigned dispatch(const InstRef &IR) override; - virtual void onInstructionIssued(const InstRef &IR) override { + void onInstructionIssued(const InstRef &IR) override { unsigned GroupID = IR.getInstruction()->getLSUTokenID(); Groups[GroupID]->onInstructionIssued(IR); } - virtual void onInstructionRetired(const InstRef &IR) override; + void onInstructionRetired(const InstRef &IR) override; - virtual void onInstructionExecuted(const InstRef &IR) override; + void onInstructionExecuted(const InstRef &IR) override; - virtual void cycleEvent() override; + void cycleEvent() override; #ifndef NDEBUG - virtual void dump() const override; + void dump() const override; #endif private: diff --git a/llvm/include/llvm/MCA/HardwareUnits/ResourceManager.h b/llvm/include/llvm/MCA/HardwareUnits/ResourceManager.h index d88ee7c..958911d 100644 --- a/llvm/include/llvm/MCA/HardwareUnits/ResourceManager.h +++ b/llvm/include/llvm/MCA/HardwareUnits/ResourceManager.h @@ -121,7 +121,7 @@ public: DefaultResourceStrategy(uint64_t UnitMask) : ResourceUnitMask(UnitMask), NextInSequenceMask(UnitMask), RemovedFromNextInSequence(0) {} - virtual ~DefaultResourceStrategy() = default; + ~DefaultResourceStrategy() override = default; uint64_t select(uint64_t ReadyMask) override; void used(uint64_t Mask) override; diff --git a/llvm/include/llvm/MCA/HardwareUnits/Scheduler.h b/llvm/include/llvm/MCA/HardwareUnits/Scheduler.h index 0372600..34ff155 100644 --- a/llvm/include/llvm/MCA/HardwareUnits/Scheduler.h +++ b/llvm/include/llvm/MCA/HardwareUnits/Scheduler.h @@ -47,7 +47,7 @@ class LLVM_ABI DefaultSchedulerStrategy : public SchedulerStrategy { public: DefaultSchedulerStrategy() = default; - virtual ~DefaultSchedulerStrategy(); + ~DefaultSchedulerStrategy() override; bool compare(const InstRef &Lhs, const InstRef &Rhs) const override { int LhsRank = computeRank(Lhs); diff --git a/llvm/include/llvm/MCA/View.h b/llvm/include/llvm/MCA/View.h index 4d6f930..5b2e546 100644 --- a/llvm/include/llvm/MCA/View.h +++ b/llvm/include/llvm/MCA/View.h @@ -26,7 +26,7 @@ namespace mca { class LLVM_ABI View : public HWEventListener { public: - virtual ~View() = default; + ~View() override = default; virtual void printView(llvm::raw_ostream &OS) const = 0; virtual StringRef getNameAsString() const = 0; diff --git a/llvm/include/llvm/ObjCopy/ConfigManager.h b/llvm/include/llvm/ObjCopy/ConfigManager.h index 27fbd96..1568799 100644 --- a/llvm/include/llvm/ObjCopy/ConfigManager.h +++ b/llvm/include/llvm/ObjCopy/ConfigManager.h @@ -23,7 +23,7 @@ namespace llvm { namespace objcopy { struct LLVM_ABI ConfigManager : public MultiFormatConfig { - virtual ~ConfigManager() {} + ~ConfigManager() override {} const CommonConfig &getCommonConfig() const override { return Common; } diff --git a/llvm/include/llvm/Object/GOFFObjectFile.h b/llvm/include/llvm/Object/GOFFObjectFile.h index b6b22ee..80da64e 100644 --- a/llvm/include/llvm/Object/GOFFObjectFile.h +++ b/llvm/include/llvm/Object/GOFFObjectFile.h @@ -91,10 +91,10 @@ private: // SectionRef. void moveSectionNext(DataRefImpl &Sec) const override; - virtual Expected<StringRef> getSectionName(DataRefImpl Sec) const override; + Expected<StringRef> getSectionName(DataRefImpl Sec) const override; uint64_t getSectionAddress(DataRefImpl Sec) const override; uint64_t getSectionSize(DataRefImpl Sec) const override; - virtual Expected<ArrayRef<uint8_t>> + Expected<ArrayRef<uint8_t>> getSectionContents(DataRefImpl Sec) const override; uint64_t getSectionIndex(DataRefImpl Sec) const override { return Sec.d.a; } uint64_t getSectionAlignment(DataRefImpl Sec) const override; diff --git a/llvm/include/llvm/ProfileData/MemProfReader.h b/llvm/include/llvm/ProfileData/MemProfReader.h index 25578ec..8fdae7a 100644 --- a/llvm/include/llvm/ProfileData/MemProfReader.h +++ b/llvm/include/llvm/ProfileData/MemProfReader.h @@ -110,7 +110,7 @@ class LLVM_ABI RawMemProfReader final : public MemProfReader { public: RawMemProfReader(const RawMemProfReader &) = delete; RawMemProfReader &operator=(const RawMemProfReader &) = delete; - virtual ~RawMemProfReader() override; + ~RawMemProfReader() override; // Prints the contents of the profile in YAML format. void printYAML(raw_ostream &OS); diff --git a/llvm/include/llvm/ProfileData/PGOCtxProfWriter.h b/llvm/include/llvm/ProfileData/PGOCtxProfWriter.h index 7031728..6733e1c 100644 --- a/llvm/include/llvm/ProfileData/PGOCtxProfWriter.h +++ b/llvm/include/llvm/ProfileData/PGOCtxProfWriter.h @@ -92,7 +92,7 @@ public: PGOCtxProfileWriter(raw_ostream &Out, std::optional<unsigned> VersionOverride = std::nullopt, bool IncludeEmpty = false); - ~PGOCtxProfileWriter() { Writer.ExitBlock(); } + ~PGOCtxProfileWriter() override { Writer.ExitBlock(); } void startContextSection() override; void writeContextual(const ctx_profile::ContextNode &RootNode, diff --git a/llvm/include/llvm/SandboxIR/BasicBlock.h b/llvm/include/llvm/SandboxIR/BasicBlock.h index 25bbb6c..a8dd508 100644 --- a/llvm/include/llvm/SandboxIR/BasicBlock.h +++ b/llvm/include/llvm/SandboxIR/BasicBlock.h @@ -78,7 +78,7 @@ class BasicBlock : public Value { } public: - ~BasicBlock() = default; + ~BasicBlock() override = default; /// For isa/dyn_cast. static bool classof(const Value *From) { return From->getSubclassID() == Value::ClassID::Block; diff --git a/llvm/include/llvm/SandboxIR/PassManager.h b/llvm/include/llvm/SandboxIR/PassManager.h index 6fccaf0..93ca710 100644 --- a/llvm/include/llvm/SandboxIR/PassManager.h +++ b/llvm/include/llvm/SandboxIR/PassManager.h @@ -49,7 +49,7 @@ protected: } PassManager(const PassManager &) = delete; PassManager(PassManager &&) = default; - virtual ~PassManager() = default; + ~PassManager() override = default; PassManager &operator=(const PassManager &) = delete; public: diff --git a/llvm/include/llvm/Support/Program.h b/llvm/include/llvm/Support/Program.h index da5685d..53c2e75 100644 --- a/llvm/include/llvm/Support/Program.h +++ b/llvm/include/llvm/Support/Program.h @@ -45,7 +45,7 @@ typedef procid_t process_t; /// This struct encapsulates information about a process. struct ProcessInfo { - enum : procid_t { InvalidPid = 0 }; + static constexpr procid_t InvalidPid = 0; procid_t Pid; /// The process identifier. process_t Process; /// Platform-dependent process object. diff --git a/llvm/include/llvm/Support/SpecialCaseList.h b/llvm/include/llvm/Support/SpecialCaseList.h index 860f73c..cb8e568de 100644 --- a/llvm/include/llvm/Support/SpecialCaseList.h +++ b/llvm/include/llvm/Support/SpecialCaseList.h @@ -170,6 +170,10 @@ private: RadixTree<iterator_range<StringRef::const_reverse_iterator>, SmallVector<const GlobMatcher::Glob *, 1>>> PrefixSuffixToGlob; + + RadixTree<iterator_range<StringRef::const_iterator>, + SmallVector<const GlobMatcher::Glob *, 1>> + SubstrToGlob; }; /// Represents a set of patterns and their line numbers diff --git a/llvm/include/llvm/Target/TargetLoweringObjectFile.h b/llvm/include/llvm/Target/TargetLoweringObjectFile.h index 4d6cbc5..06508bf 100644 --- a/llvm/include/llvm/Target/TargetLoweringObjectFile.h +++ b/llvm/include/llvm/Target/TargetLoweringObjectFile.h @@ -74,7 +74,7 @@ public: TargetLoweringObjectFile(const TargetLoweringObjectFile &) = delete; TargetLoweringObjectFile & operator=(const TargetLoweringObjectFile &) = delete; - virtual ~TargetLoweringObjectFile(); + ~TargetLoweringObjectFile() override; Mangler &getMangler() const { return *Mang; } diff --git a/llvm/include/llvm/TargetParser/ARMTargetParser.def b/llvm/include/llvm/TargetParser/ARMTargetParser.def index 0ada2e7..27dbfcaf 100644 --- a/llvm/include/llvm/TargetParser/ARMTargetParser.def +++ b/llvm/include/llvm/TargetParser/ARMTargetParser.def @@ -357,6 +357,9 @@ ARM_CPU_NAME("cortex-m85", ARMV8_1MMainline, FK_FP_ARMV8_FULLFP16_D16, false, ARM_CPU_NAME("cortex-m52", ARMV8_1MMainline, FK_FP_ARMV8_FULLFP16_D16, false, (ARM::AEK_DSP | ARM::AEK_MVE | ARM::AEK_FP | ARM::AEK_FP16 | ARM::AEK_RAS | ARM::AEK_PACBTI)) +ARM_CPU_NAME("star-mc3", ARMV8_1MMainline, FK_FP_ARMV8_FULLFP16_D16, false, + (ARM::AEK_DSP | ARM::AEK_MVE | ARM::AEK_FP | ARM::AEK_FP16 | + ARM::AEK_RAS | ARM::AEK_PACBTI)) ARM_CPU_NAME("cortex-a32", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false, ARM::AEK_CRC) ARM_CPU_NAME("cortex-a35", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false, ARM::AEK_CRC) ARM_CPU_NAME("cortex-a53", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false, ARM::AEK_CRC) diff --git a/llvm/include/llvm/Transforms/IPO/Attributor.h b/llvm/include/llvm/Transforms/IPO/Attributor.h index e57032a..a013f27 100644 --- a/llvm/include/llvm/Transforms/IPO/Attributor.h +++ b/llvm/include/llvm/Transforms/IPO/Attributor.h @@ -3325,7 +3325,7 @@ struct LLVM_ABI AbstractAttribute : public IRPosition, public AADepGraphNode { AbstractAttribute(const IRPosition &IRP) : IRPosition(IRP) {} /// Virtual destructor. - virtual ~AbstractAttribute() = default; + ~AbstractAttribute() override = default; /// Compile time access to the IR attribute kind. static constexpr Attribute::AttrKind IRAttributeKind = Attribute::None; @@ -5588,7 +5588,7 @@ struct AACallEdges : public StateWrapper<BooleanState, AbstractAttribute>, // Synthetic root node for the Attributor's internal call graph. struct AttributorCallGraph : public AACallGraphNode { AttributorCallGraph(Attributor &A) : AACallGraphNode(A) {} - virtual ~AttributorCallGraph() = default; + ~AttributorCallGraph() override = default; AACallEdgeIterator optimisticEdgesBegin() const override { return AACallEdgeIterator(A, A.Functions.begin()); diff --git a/llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/DependencyGraph.h b/llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/DependencyGraph.h index 7d02d9a..588a6eb 100644 --- a/llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/DependencyGraph.h +++ b/llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/DependencyGraph.h @@ -305,7 +305,7 @@ public: return make_range(MemSuccs.begin(), MemSuccs.end()); } #ifndef NDEBUG - virtual void print(raw_ostream &OS, bool PrintDeps = true) const override; + void print(raw_ostream &OS, bool PrintDeps = true) const override; #endif // NDEBUG }; diff --git a/llvm/include/llvm/XRay/FDRRecords.h b/llvm/include/llvm/XRay/FDRRecords.h index 91689cae..8a12e33 100644 --- a/llvm/include/llvm/XRay/FDRRecords.h +++ b/llvm/include/llvm/XRay/FDRRecords.h @@ -101,7 +101,7 @@ public: MetadataType metadataType() const { return MT; } - virtual ~MetadataRecord() = default; + ~MetadataRecord() override = default; }; // What follows are specific Metadata record types which encapsulate the diff --git a/llvm/include/llvm/XRay/FDRTraceWriter.h b/llvm/include/llvm/XRay/FDRTraceWriter.h index 957039d..dc68c7f 100644 --- a/llvm/include/llvm/XRay/FDRTraceWriter.h +++ b/llvm/include/llvm/XRay/FDRTraceWriter.h @@ -30,7 +30,7 @@ class LLVM_ABI FDRTraceWriter : public RecordVisitor { public: // Construct an FDRTraceWriter associated with an output stream. explicit FDRTraceWriter(raw_ostream &O, const XRayFileHeader &H); - ~FDRTraceWriter(); + ~FDRTraceWriter() override; Error visit(BufferExtents &) override; Error visit(WallclockRecord &) override; |
