diff options
Diffstat (limited to 'lldb/source/Expression/ClangExpression.cpp')
| -rw-r--r-- | lldb/source/Expression/ClangExpression.cpp | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/lldb/source/Expression/ClangExpression.cpp b/lldb/source/Expression/ClangExpression.cpp index 6922ac4acec..a3a58b69a14 100644 --- a/lldb/source/Expression/ClangExpression.cpp +++ b/lldb/source/Expression/ClangExpression.cpp @@ -58,6 +58,7 @@ #include "lldb/Expression/ClangASTSource.h" #include "lldb/Expression/ClangResultSynthesizer.h" #include "lldb/Expression/ClangStmtVisitor.h" +#include "lldb/Expression/IRForTarget.h" #include "lldb/Expression/IRToDWARF.h" #include "lldb/Symbol/ClangASTContext.h" #include "lldb/Expression/RecordingMemoryManager.h" @@ -474,7 +475,7 @@ ClangExpression::ConvertExpressionToDWARF (ClangExpressionVariableList& expr_loc return 0; } -unsigned +bool ClangExpression::ConvertIRToDWARF (ClangExpressionVariableList &expr_local_variable_list, StreamString &dwarf_opcode_strm) { @@ -496,6 +497,26 @@ ClangExpression::ConvertIRToDWARF (ClangExpressionVariableList &expr_local_varia } bool +ClangExpression::PrepareIRForTarget (ClangExpressionVariableList &expr_local_variable_list) +{ + Log *log = lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS); + + llvm::Module *module = m_code_generator_ptr->GetModule(); + + if (!module) + { + if (log) + log->Printf("IR doesn't contain a module"); + + return 1; + } + + IRForTarget ir_for_target("IR for target", m_decl_map); + + return ir_for_target.runOnModule(*module); +} + +bool ClangExpression::JITFunction (const ExecutionContext &exc_context, const char *name) { |

