Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-05-10 08:43:30

0001 //===- llvm/CodeGen/MachineFunctionAnalysis.h -------------------*- C++ -*-===//
0002 //
0003 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
0004 // See https://llvm.org/LICENSE.txt for license information.
0005 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
0006 //
0007 //===----------------------------------------------------------------------===//
0008 //
0009 // This file declares the MachineFunctionAnalysis class.
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 /// This analysis create MachineFunction for given Function.
0024 /// To release the MachineFunction, users should invalidate it explicitly.
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 } // namespace llvm
0049 
0050 #endif // LLVM_CODEGEN_MachineFunctionAnalysis