xref: /llvm-project/clang/lib/CodeGen/LinkInModulesPass.cpp (revision e8a6624325e0c628ec23e5f124f1d2002f138dd5)
1c6cf3295SJacob Lambert //===-- LinkInModulesPass.cpp - Module Linking pass --------------- C++ -*-===//
2c6cf3295SJacob Lambert //
3c6cf3295SJacob Lambert // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4c6cf3295SJacob Lambert // See https://llvm.org/LICENSE.txt for license information.
5c6cf3295SJacob Lambert // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6c6cf3295SJacob Lambert //
7c6cf3295SJacob Lambert //===----------------------------------------------------------------------===//
8c6cf3295SJacob Lambert /// \file
9c6cf3295SJacob Lambert ///
10c6cf3295SJacob Lambert /// LinkInModulesPass implementation.
11c6cf3295SJacob Lambert ///
12c6cf3295SJacob Lambert //===----------------------------------------------------------------------===//
13c6cf3295SJacob Lambert 
14c6cf3295SJacob Lambert #include "LinkInModulesPass.h"
15c6cf3295SJacob Lambert #include "BackendConsumer.h"
16c6cf3295SJacob Lambert 
17c6cf3295SJacob Lambert using namespace llvm;
18c6cf3295SJacob Lambert 
19*982c5471SJacob Lambert LinkInModulesPass::LinkInModulesPass(clang::BackendConsumer *BC) : BC(BC) {}
20c6cf3295SJacob Lambert 
21c6cf3295SJacob Lambert PreservedAnalyses LinkInModulesPass::run(Module &M, ModuleAnalysisManager &AM) {
226d4ffbdfSJacob Lambert   if (!BC)
236d4ffbdfSJacob Lambert     return PreservedAnalyses::all();
24c6cf3295SJacob Lambert 
252264544eSJacob Lambert   if (BC->LinkInModules(&M))
2611a67997SJacob Lambert     report_fatal_error("Bitcode module postopt linking failed, aborted!");
27c6cf3295SJacob Lambert 
2811a67997SJacob Lambert   return PreservedAnalyses::none();
29c6cf3295SJacob Lambert }
30