//===-Config.h - LLVM Link Time Optimizer Configuration ---------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // This file defines the lto::Config data structure, which allows clients to // configure LTO. // //===----------------------------------------------------------------------===// #ifndef LLVM_LTO_CONFIG_H #define LLVM_LTO_CONFIG_H #include "llvm/ADT/DenseSet.h" #include "llvm/Config/llvm-config.h" #include "llvm/IR/DiagnosticInfo.h" #include "llvm/IR/GlobalValue.h" #include "llvm/IR/LLVMContext.h" #include "llvm/IR/LegacyPassManager.h" #include "llvm/Passes/PassBuilder.h" #include "llvm/Support/CodeGen.h" #include "llvm/Target/TargetOptions.h" #include <functional> #include <optional> namespace llvm { class Error; class Module; class ModuleSummaryIndex; class raw_pwrite_stream; namespace lto { /// LTO configuration. A linker can configure LTO by setting fields in this data /// structure and passing it to the lto::LTO constructor. struct Config { … }; struct LTOLLVMDiagnosticHandler : public DiagnosticHandler { … }; /// A derived class of LLVMContext that initializes itself according to a given /// Config object. The purpose of this class is to tie ownership of the /// diagnostic handler to the context, as opposed to the Config object (which /// may be ephemeral). // FIXME: This should not be required as diagnostic handler is not callback. struct LTOLLVMContext : LLVMContext { … }; } } #endif