xref: /freebsd-src/contrib/llvm-project/clang/lib/CodeGen/LinkInModulesPass.cpp (revision 5f757f3ff9144b609b3c433dfd370cc6bdc191ad)
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