1 //===-- IRInterpreter.h -----------------------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #ifndef liblldb_IRInterpreter_h_
11 #define liblldb_IRInterpreter_h_
13 #include "lldb/lldb-public.h"
14 #include "lldb/Core/ConstString.h"
15 #include "lldb/Core/Stream.h"
16 #include "lldb/Symbol/TaggedASTType.h"
17 #include "llvm/ADT/ArrayRef.h"
18 #include "llvm/Pass.h"
25 namespace lldb_private {
27 class ClangExpressionDeclMap;
32 //----------------------------------------------------------------------
33 /// @class IRInterpreter IRInterpreter.h "lldb/Expression/IRInterpreter.h"
34 /// @brief Attempt to interpret the function's code if it does not require
35 /// running the target.
37 /// In some cases, the IR for an expression can be evaluated entirely
38 /// in the debugger, manipulating variables but not executing any code
39 /// in the target. The IRInterpreter attempts to do this.
40 //----------------------------------------------------------------------
45 CanInterpret (llvm::Module &module,
46 llvm::Function &function,
47 lldb_private::Error &error);
50 Interpret (llvm::Module &module,
51 llvm::Function &function,
52 llvm::ArrayRef<lldb::addr_t> args,
53 lldb_private::IRMemoryMap &memory_map,
54 lldb_private::Error &error,
55 lldb::addr_t stack_frame_bottom,
56 lldb::addr_t stack_frame_top);
60 supportsFunction (llvm::Function &llvm_function,
61 lldb_private::Error &err);