diff options
author | paperchalice <liujunchang97@outlook.com> | 2024-01-10 17:49:45 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-10 17:49:45 +0800 |
commit | 7c71a09d5e712bedbed867226b3fa0bbfe789384 (patch) | |
tree | 54721f0ed2d02632033fbf653894760f64cc1969 /llvm/lib/CodeGen/AssignmentTrackingAnalysis.cpp | |
parent | a6b5d6dab0544892fb6afc46f71677969285c5a8 (diff) | |
download | llvm-7c71a09d5e712bedbed867226b3fa0bbfe789384.zip llvm-7c71a09d5e712bedbed867226b3fa0bbfe789384.tar.gz llvm-7c71a09d5e712bedbed867226b3fa0bbfe789384.tar.bz2 |
[CodeGen][NewPM] Port AssignmentTrackingAnalysis to new pass manager (#77550)
Diffstat (limited to 'llvm/lib/CodeGen/AssignmentTrackingAnalysis.cpp')
-rw-r--r-- | llvm/lib/CodeGen/AssignmentTrackingAnalysis.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/AssignmentTrackingAnalysis.cpp b/llvm/lib/CodeGen/AssignmentTrackingAnalysis.cpp index ad3ad99..eb37265 100644 --- a/llvm/lib/CodeGen/AssignmentTrackingAnalysis.cpp +++ b/llvm/lib/CodeGen/AssignmentTrackingAnalysis.cpp @@ -1,3 +1,11 @@ +//===-- AssignmentTrackingAnalysis.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 +// +//===----------------------------------------------------------------------===// + #include "llvm/CodeGen/AssignmentTrackingAnalysis.h" #include "LiveDebugValues/LiveDebugValues.h" #include "llvm/ADT/BitVector.h" @@ -2553,6 +2561,32 @@ static void analyzeFunction(Function &Fn, const DataLayout &Layout, } } +FunctionVarLocs +DebugAssignmentTrackingAnalysis::run(Function &F, + FunctionAnalysisManager &FAM) { + if (!isAssignmentTrackingEnabled(*F.getParent())) + return FunctionVarLocs(); + + auto &DL = F.getParent()->getDataLayout(); + + FunctionVarLocsBuilder Builder; + analyzeFunction(F, DL, &Builder); + + // Save these results. + FunctionVarLocs Results; + Results.init(Builder); + return Results; +} + +AnalysisKey DebugAssignmentTrackingAnalysis::Key; + +PreservedAnalyses +DebugAssignmentTrackingPrinterPass::run(Function &F, + FunctionAnalysisManager &FAM) { + FAM.getResult<DebugAssignmentTrackingAnalysis>(F).print(OS, F); + return PreservedAnalyses::all(); +} + bool AssignmentTrackingAnalysis::runOnFunction(Function &F) { if (!isAssignmentTrackingEnabled(*F.getParent())) return false; |