From fbc266465ed3585efdbd8e9ebf71e97ce7e8b464 Mon Sep 17 00:00:00 2001 From: Dimitry Andric Date: Sun, 28 Jul 2024 01:34:35 +0200 Subject: Merge llvm-project main llvmorg-19-init-18630-gf2ccf80136a0 This updates llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to llvm-project main llvmorg-19-init-18630-gf2ccf80136a0, the last commit before the upstream release/19.x branch was created. PR: 280562 MFC after: 1 month (cherry picked from commit 0fca6ea1d4eea4c934cfff25ac9ee8ad6fe95583) --- .../llvm/lib/CodeGen/MachineFunctionAnalysis.cpp | 47 ++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 contrib/llvm-project/llvm/lib/CodeGen/MachineFunctionAnalysis.cpp (limited to 'contrib/llvm-project/llvm/lib/CodeGen/MachineFunctionAnalysis.cpp') diff --git a/contrib/llvm-project/llvm/lib/CodeGen/MachineFunctionAnalysis.cpp b/contrib/llvm-project/llvm/lib/CodeGen/MachineFunctionAnalysis.cpp new file mode 100644 index 000000000000..24eb360723da --- /dev/null +++ b/contrib/llvm-project/llvm/lib/CodeGen/MachineFunctionAnalysis.cpp @@ -0,0 +1,47 @@ +//===- MachineFunctionAnalysis.cpp ----------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This file contains the definitions of the MachineFunctionAnalysis +// members. +// +//===----------------------------------------------------------------------===// + +#include "llvm/CodeGen/MachineFunctionAnalysis.h" +#include "llvm/CodeGen/MachineFunction.h" +#include "llvm/CodeGen/MachineModuleInfo.h" +#include "llvm/IR/Function.h" +#include "llvm/Target/TargetMachine.h" + +using namespace llvm; + +AnalysisKey MachineFunctionAnalysis::Key; + +bool MachineFunctionAnalysis::Result::invalidate( + Function &, const PreservedAnalyses &PA, + FunctionAnalysisManager::Invalidator &) { + // Unless it is invalidated explicitly, it should remain preserved. + auto PAC = PA.getChecker(); + return !PAC.preservedWhenStateless(); +} + +MachineFunctionAnalysis::Result +MachineFunctionAnalysis::run(Function &F, FunctionAnalysisManager &FAM) { + auto &Context = F.getContext(); + const TargetSubtargetInfo &STI = *TM->getSubtargetImpl(F); + auto &MMI = FAM.getResult(F) + .getCachedResult(*F.getParent()) + ->getMMI(); + auto MF = std::make_unique( + F, *TM, STI, Context.generateMachineFunctionNum(F), MMI); + MF->initTargetMachineFunctionInfo(STI); + + // MRI callback for target specific initializations. + TM->registerMachineRegisterInfoCallback(*MF); + + return Result(std::move(MF)); +} -- cgit v1.2.3