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 AndricLinkInModulesPass::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 AndricPreservedAnalyses 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