//===-- IRForTarget.h ---------------------------------------------*- 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 // //===----------------------------------------------------------------------===// #ifndef LLDB_SOURCE_PLUGINS_EXPRESSIONPARSER_CLANG_IRFORTARGET_H #define LLDB_SOURCE_PLUGINS_EXPRESSIONPARSER_CLANG_IRFORTARGET_H #include "lldb/Symbol/TaggedASTType.h" #include "lldb/Utility/ConstString.h" #include "lldb/Utility/Status.h" #include "lldb/Utility/Stream.h" #include "lldb/Utility/StreamString.h" #include "lldb/lldb-public.h" #include "llvm/IR/DerivedTypes.h" #include "llvm/Pass.h" #include <functional> #include <map> namespace llvm { class BasicBlock; class CallInst; class Constant; class ConstantInt; class Function; class GlobalValue; class GlobalVariable; class Instruction; class Module; class StoreInst; class DataLayout; class Value; } namespace clang { class NamedDecl; } namespace lldb_private { class ClangExpressionDeclMap; class IRExecutionUnit; class IRMemoryMap; } /// \class IRForTarget IRForTarget.h "lldb/Expression/IRForTarget.h" /// Transforms the IR for a function to run in the target /// /// Once an expression has been parsed and converted to IR, it can run in two /// contexts: interpreted by LLDB as a DWARF location expression, or compiled /// by the JIT and inserted into the target process for execution. /// /// IRForTarget makes the second possible, by applying a series of /// transformations to the IR which make it relocatable. These /// transformations are discussed in more detail next to their relevant /// functions. class IRForTarget { … }; #endif // LLDB_SOURCE_PLUGINS_EXPRESSIONPARSER_CLANG_IRFORTARGET_H