LLVM 22.0.0git
RuntimeLibcallInfo.h
Go to the documentation of this file.
1//===-- RuntimeLibcallInfo.h - Runtime library information ------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef LLVM_ANALYSIS_RUNTIMELIBCALLINFO_H
10#define LLVM_ANALYSIS_RUNTIMELIBCALLINFO_H
11
13#include "llvm/Pass.h"
14
15namespace llvm {
16
18 : public AnalysisInfoMixin<RuntimeLibraryAnalysis> {
19public:
21
24 : LibcallsInfo(std::move(BaselineInfoImpl)) {}
26 const Triple &TT,
29 EABI EABIVersion = EABI::Default, StringRef ABIName = "",
31
33
34private:
36 static AnalysisKey Key;
37
38 std::optional<RTLIB::RuntimeLibcallsInfo> LibcallsInfo;
39};
40
43 std::optional<RTLIB::RuntimeLibcallsInfo> RTLCI;
44
45public:
46 static char ID;
49 const Triple &TT,
52 EABI EABIVersion = EABI::Default, StringRef ABIName = "",
54
56 if (!RTLCI) {
57 ModuleAnalysisManager DummyMAM;
58 RTLCI = RTLA.run(M, DummyMAM);
59 }
60
61 return *RTLCI;
62 }
63
64 void getAnalysisUsage(AnalysisUsage &AU) const override;
65};
66
68
69} // namespace llvm
70
71#endif
#define LLVM_ABI
Definition Compiler.h:213
Represent the analysis usage information of a pass.
ImmutablePass(char &pid)
Definition Pass.h:287
A Module instance is used to store all the information related to an LLVM module.
Definition Module.h:67
RTLIB::RuntimeLibcallsInfo Result
RuntimeLibraryAnalysis(RTLIB::RuntimeLibcallsInfo &&BaselineInfoImpl)
const RTLIB::RuntimeLibcallsInfo & getRTLCI(const Module &M)
StringRef - Represent a constant reference to a string, i.e.
Definition StringRef.h:55
Triple - Helper class for working with autoconf configuration names.
Definition Triple.h:47
This is an optimization pass for GlobalISel generic memory operations.
ExceptionHandling
Definition CodeGen.h:53
@ None
No exception support.
Definition CodeGen.h:54
LLVM_ABI ModulePass * createRuntimeLibraryInfoWrapperPass()
LLVM_ATTRIBUTE_VISIBILITY_DEFAULT AnalysisKey InnerAnalysisManagerProxy< AnalysisManagerT, IRUnitT, ExtraArgTs... >::Key
OutputIt move(R &&Range, OutputIt Out)
Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.
Definition STLExtras.h:1879
VectorLibrary
List of known vector-functions libraries.
EABI
Definition CodeGen.h:73
AnalysisManager< Module > ModuleAnalysisManager
Convenience typedef for the Module analysis manager.
Definition MIRParser.h:39
Implement std::hash so that hash_code can be used in STL containers.
Definition BitVector.h:870
A CRTP mix-in that provides informational APIs needed for analysis passes.
Definition PassManager.h:92
A special type used by analysis passes to provide an address that identifies that particular analysis...
Definition Analysis.h:29
A simple container for information about the supported runtime calls.