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