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