| //===- RuntimeLibcallInfo.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/Analysis/RuntimeLibcallInfo.h" | |
| #include "llvm/InitializePasses.h" | |
| using namespace llvm; | |
| AnalysisKey RuntimeLibraryAnalysis::Key; | |
| RTLIB::RuntimeLibcallsInfo | |
| RuntimeLibraryAnalysis::run(const Module &M, ModuleAnalysisManager &) { | |
| return RTLIB::RuntimeLibcallsInfo(M, ABIName, VecLib); | |
| } | |
| INITIALIZE_PASS(RuntimeLibraryInfoWrapper, "runtime-library-info", | |
| "Runtime Library Function Analysis", false, true) | |
| RuntimeLibraryInfoWrapper::RuntimeLibraryInfoWrapper() : ImmutablePass(ID) {} | |
| RuntimeLibraryInfoWrapper::RuntimeLibraryInfoWrapper(StringRef ABIName, | |
| VectorLibrary VecLib) | |
| : ImmutablePass(ID), RTLA(ABIName, VecLib) {} | |
| char RuntimeLibraryInfoWrapper::ID = 0; | |
| ModulePass *llvm::createRuntimeLibraryInfoWrapperPass() { | |
| return new RuntimeLibraryInfoWrapper(); | |
| } | |
| void RuntimeLibraryInfoWrapper::getAnalysisUsage(AnalysisUsage &AU) const { | |
| AU.setPreservesAll(); | |
| } | |
| // Assume this is stable unless explicitly invalidated. | |
| bool RTLIB::RuntimeLibcallsInfo::invalidate( | |
| Module &M, const PreservedAnalyses &PA, | |
| ModuleAnalysisManager::Invalidator &) { | |
| auto PAC = PA.getChecker<RuntimeLibraryAnalysis>(); | |
| return !PAC.preservedWhenStateless(); | |
| } |