LLVM
19.0.0git
lib
CodeGen
MachineFunctionAnalysis.cpp
Go to the documentation of this file.
1
//===- MachineFunctionAnalysis.cpp ----------------------------------------===//
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
// This file contains the definitions of the MachineFunctionAnalysis
10
// members.
11
//
12
//===----------------------------------------------------------------------===//
13
14
#include "
llvm/CodeGen/MachineFunctionAnalysis.h
"
15
#include "
llvm/CodeGen/MachineFunction.h
"
16
#include "
llvm/CodeGen/MachineModuleInfo.h
"
17
#include "
llvm/Target/TargetMachine.h
"
18
19
using namespace
llvm
;
20
21
AnalysisKey
MachineFunctionAnalysis::Key;
22
23
bool
MachineFunctionAnalysis::Result::invalidate
(
24
Function
&,
const
PreservedAnalyses
&PA,
25
FunctionAnalysisManager::Invalidator
&) {
26
// Unless it is invalidated explicitly, it should remain preserved.
27
auto
PAC = PA.
getChecker
<
MachineFunctionAnalysis
>();
28
return
!PAC.preservedWhenStateless();
29
}
30
31
MachineFunctionAnalysis::Result
32
MachineFunctionAnalysis::run
(
Function
&
F
,
FunctionAnalysisManager
&
FAM
) {
33
auto
&
Context
=
F
.getContext();
34
const
TargetSubtargetInfo
&STI = *TM->
getSubtargetImpl
(
F
);
35
auto
&MMI =
FAM
.
getResult
<
ModuleAnalysisManagerFunctionProxy
>(
F
)
36
.getCachedResult<MachineModuleAnalysis>(*
F
.getParent())
37
->getMMI();
38
auto
MF = std::make_unique<MachineFunction>(
39
F
, *TM, STI,
Context
.
generateMachineFunctionNum
(
F
), MMI);
40
MF->initTargetMachineFunctionInfo(STI);
41
42
// MRI callback for target specific initializations.
43
TM->
registerMachineRegisterInfoCallback
(*MF);
44
45
return
Result
(std::move(MF));
46
}
F
#define F(x, y, z)
Definition:
MD5.cpp:55
MachineFunctionAnalysis.h
MachineFunction.h
MachineModuleInfo.h
Context
LLVMContext & Context
Definition:
NVVMIntrRange.cpp:66
FAM
FunctionAnalysisManager FAM
Definition:
PassBuilderBindings.cpp:59
llvm::AnalysisManager::Invalidator
API to communicate dependencies between analyses during invalidation.
Definition:
PassManager.h:360
llvm::AnalysisManager
A container for analyses that lazily runs them and caches their results.
Definition:
PassManager.h:321
llvm::AnalysisManager::getResult
PassT::Result & getResult(IRUnitT &IR, ExtraArgTs... ExtraArgs)
Get the result of an analysis pass for a given IR unit.
Definition:
PassManager.h:473
llvm::Function
Definition:
Function.h:63
llvm::LLVMContext::generateMachineFunctionNum
unsigned generateMachineFunctionNum(Function &)
generateMachineFunctionNum - Get a unique number for MachineFunction that associated with the given F...
Definition:
LLVMContext.cpp:124
llvm::LLVMTargetMachine::registerMachineRegisterInfoCallback
virtual void registerMachineRegisterInfoCallback(MachineFunction &MF) const
Definition:
TargetMachine.h:523
llvm::MachineFunctionAnalysis::Result
Definition:
MachineFunctionAnalysis.h:34
llvm::MachineFunctionAnalysis::Result::invalidate
bool invalidate(Function &, const PreservedAnalyses &PA, FunctionAnalysisManager::Invalidator &)
Definition:
MachineFunctionAnalysis.cpp:23
llvm::MachineFunctionAnalysis
This analysis create MachineFunction for given Function.
Definition:
MachineFunctionAnalysis.h:26
llvm::MachineFunctionAnalysis::run
Result run(Function &F, FunctionAnalysisManager &FAM)
Definition:
MachineFunctionAnalysis.cpp:32
llvm::OuterAnalysisManagerProxy
An analysis over an "inner" IR unit that provides access to an analysis manager over a "outer" IR uni...
Definition:
PassManager.h:756
llvm::PreservedAnalyses
A set of analyses that are preserved following a run of a transformation pass.
Definition:
Analysis.h:109
llvm::PreservedAnalyses::getChecker
PreservedAnalysisChecker getChecker() const
Build a checker for this PreservedAnalyses and the specified analysis type.
Definition:
Analysis.h:264
llvm::TargetMachine::getSubtargetImpl
virtual const TargetSubtargetInfo * getSubtargetImpl(const Function &) const
Virtual method implemented by subclasses that returns a reference to that target's TargetSubtargetInf...
Definition:
TargetMachine.h:132
llvm::TargetSubtargetInfo
TargetSubtargetInfo - Generic base class for all target subtargets.
Definition:
TargetSubtargetInfo.h:63
TargetMachine.h
llvm
This is an optimization pass for GlobalISel generic memory operations.
Definition:
AddressRanges.h:18
llvm::AnalysisKey
A special type used by analysis passes to provide an address that identifies that particular analysis...
Definition:
Analysis.h:26
Generated on Fri May 17 2024 22:59:37 for LLVM by
1.9.6