File indexing completed on 2026-05-10 08:43:30
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 #ifndef LLVM_CODEGEN_MACHINEFUNCTIONANALYSIS
0014 #define LLVM_CODEGEN_MACHINEFUNCTIONANALYSIS
0015
0016 #include "llvm/IR/PassManager.h"
0017
0018 namespace llvm {
0019
0020 class MachineFunction;
0021 class TargetMachine;
0022
0023
0024
0025 class MachineFunctionAnalysis
0026 : public AnalysisInfoMixin<MachineFunctionAnalysis> {
0027 friend AnalysisInfoMixin<MachineFunctionAnalysis>;
0028
0029 static AnalysisKey Key;
0030
0031 const TargetMachine *TM;
0032
0033 public:
0034 class Result {
0035 std::unique_ptr<MachineFunction> MF;
0036
0037 public:
0038 Result(std::unique_ptr<MachineFunction> MF) : MF(std::move(MF)) {}
0039 MachineFunction &getMF() { return *MF; };
0040 bool invalidate(Function &, const PreservedAnalyses &PA,
0041 FunctionAnalysisManager::Invalidator &);
0042 };
0043
0044 MachineFunctionAnalysis(const TargetMachine *TM) : TM(TM) {};
0045 Result run(Function &F, FunctionAnalysisManager &FAM);
0046 };
0047
0048 }
0049
0050 #endif