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