xref: /freebsd-src/contrib/llvm-project/clang/lib/CodeGen/LinkInModulesPass.h (revision 0fca6ea1d4eea4c934cfff25ac9ee8ad6fe95583)
15f757f3fSDimitry Andric //===-- LinkInModulesPass.h - Module Linking pass ----------------- C++ -*-===//
25f757f3fSDimitry Andric //
35f757f3fSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
45f757f3fSDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
55f757f3fSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
65f757f3fSDimitry Andric //
75f757f3fSDimitry Andric //===----------------------------------------------------------------------===//
85f757f3fSDimitry Andric /// \file
95f757f3fSDimitry Andric ///
105f757f3fSDimitry Andric /// This file provides a pass to link in Modules from a provided
115f757f3fSDimitry Andric /// BackendConsumer.
125f757f3fSDimitry Andric ///
135f757f3fSDimitry Andric //===----------------------------------------------------------------------===//
145f757f3fSDimitry Andric 
155f757f3fSDimitry Andric #ifndef LLVM_BITCODE_LINKINMODULESPASS_H
165f757f3fSDimitry Andric #define LLVM_BITCODE_LINKINMODULESPASS_H
175f757f3fSDimitry Andric 
185f757f3fSDimitry Andric #include "BackendConsumer.h"
195f757f3fSDimitry Andric #include "llvm/IR/PassManager.h"
205f757f3fSDimitry Andric 
215f757f3fSDimitry Andric namespace llvm {
225f757f3fSDimitry Andric class Module;
235f757f3fSDimitry Andric class ModulePass;
245f757f3fSDimitry Andric class Pass;
255f757f3fSDimitry Andric 
265f757f3fSDimitry Andric /// Create and return a pass that links in Moduels from a provided
275f757f3fSDimitry Andric /// BackendConsumer to a given primary Module. Note that this pass is designed
285f757f3fSDimitry Andric /// for use with the legacy pass manager.
295f757f3fSDimitry Andric class LinkInModulesPass : public PassInfoMixin<LinkInModulesPass> {
305f757f3fSDimitry Andric   clang::BackendConsumer *BC;
315f757f3fSDimitry Andric 
325f757f3fSDimitry Andric public:
33*0fca6ea1SDimitry Andric   LinkInModulesPass(clang::BackendConsumer *BC);
345f757f3fSDimitry Andric 
355f757f3fSDimitry Andric   PreservedAnalyses run(Module &M, AnalysisManager<Module> &);
365f757f3fSDimitry Andric   static bool isRequired() { return true; }
375f757f3fSDimitry Andric };
385f757f3fSDimitry Andric 
395f757f3fSDimitry Andric } // namespace llvm
405f757f3fSDimitry Andric 
415f757f3fSDimitry Andric #endif
42