xref: /src/contrib/llvm-project/clang/lib/CodeGen/LinkInModulesPass.cpp (revision 0fca6ea1d4eea4c934cfff25ac9ee8ad6fe95583)
1b1c73532SDimitry Andric //===-- LinkInModulesPass.cpp - Module Linking pass --------------- C++ -*-===//
2b1c73532SDimitry Andric //
3b1c73532SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4b1c73532SDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
5b1c73532SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6b1c73532SDimitry Andric //
7b1c73532SDimitry Andric //===----------------------------------------------------------------------===//
8b1c73532SDimitry Andric /// \file
9b1c73532SDimitry Andric ///
10b1c73532SDimitry Andric /// LinkInModulesPass implementation.
11b1c73532SDimitry Andric ///
12b1c73532SDimitry Andric //===----------------------------------------------------------------------===//
13b1c73532SDimitry Andric 
14b1c73532SDimitry Andric #include "LinkInModulesPass.h"
15b1c73532SDimitry Andric #include "BackendConsumer.h"
16b1c73532SDimitry Andric 
17ac9a064cSDimitry Andric #include "clang/Basic/CodeGenOptions.h"
18ac9a064cSDimitry Andric #include "clang/Basic/FileManager.h"
19ac9a064cSDimitry Andric #include "clang/Basic/SourceManager.h"
20ac9a064cSDimitry Andric 
21b1c73532SDimitry Andric using namespace llvm;
22b1c73532SDimitry Andric 
LinkInModulesPass(clang::BackendConsumer * BC)23ac9a064cSDimitry Andric LinkInModulesPass::LinkInModulesPass(clang::BackendConsumer *BC) : BC(BC) {}
24b1c73532SDimitry Andric 
run(Module & M,ModuleAnalysisManager & AM)25b1c73532SDimitry Andric PreservedAnalyses LinkInModulesPass::run(Module &M, ModuleAnalysisManager &AM) {
26ac9a064cSDimitry Andric   if (!BC)
27b1c73532SDimitry Andric     return PreservedAnalyses::all();
28ac9a064cSDimitry Andric 
29ac9a064cSDimitry Andric   if (BC->LinkInModules(&M))
30ac9a064cSDimitry Andric     report_fatal_error("Bitcode module postopt linking failed, aborted!");
31ac9a064cSDimitry Andric 
32ac9a064cSDimitry Andric   return PreservedAnalyses::none();
33b1c73532SDimitry Andric }
34