LLVM 19.0.0git
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
18
19using namespace llvm;
20
21AnalysisKey MachineFunctionAnalysis::Key;
22
24 Function &, const PreservedAnalyses &PA,
26 // Unless it is invalidated explicitly, it should remain preserved.
27 auto PAC = PA.getChecker<MachineFunctionAnalysis>();
28 return !PAC.preservedWhenStateless();
29}
30
33 auto &Context = F.getContext();
34 const TargetSubtargetInfo &STI = *TM->getSubtargetImpl(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.
44
45 return Result(std::move(MF));
46}
#define F(x, y, z)
Definition: MD5.cpp:55
LLVMContext & Context
FunctionAnalysisManager FAM
API to communicate dependencies between analyses during invalidation.
Definition: PassManager.h:360
A container for analyses that lazily runs them and caches their results.
Definition: PassManager.h:321
PassT::Result & getResult(IRUnitT &IR, ExtraArgTs... ExtraArgs)
Get the result of an analysis pass for a given IR unit.
Definition: PassManager.h:473
unsigned generateMachineFunctionNum(Function &)
generateMachineFunctionNum - Get a unique number for MachineFunction that associated with the given F...
virtual void registerMachineRegisterInfoCallback(MachineFunction &MF) const
bool invalidate(Function &, const PreservedAnalyses &PA, FunctionAnalysisManager::Invalidator &)
This analysis create MachineFunction for given Function.
Result run(Function &F, FunctionAnalysisManager &FAM)
An analysis over an "inner" IR unit that provides access to an analysis manager over a "outer" IR uni...
Definition: PassManager.h:756
A set of analyses that are preserved following a run of a transformation pass.
Definition: Analysis.h:109
PreservedAnalysisChecker getChecker() const
Build a checker for this PreservedAnalyses and the specified analysis type.
Definition: Analysis.h:264
virtual const TargetSubtargetInfo * getSubtargetImpl(const Function &) const
Virtual method implemented by subclasses that returns a reference to that target's TargetSubtargetInf...
TargetSubtargetInfo - Generic base class for all target subtargets.
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18
A special type used by analysis passes to provide an address that identifies that particular analysis...
Definition: Analysis.h:26