
The idea is to store a type-value pair in clang::Value which is updated by the interpreter runtime. The class copies builtin types and boxes non-builtin types to provide some lifetime control. The patch enables default printers for C and C++ using a very minimalistic approach. We handle enums, arrays and user types. Once we land this we can focus on enabling user-defined pretty-printers which take control over printing of types The work started as part of https://reviews.llvm.org/D146809, then we created a giant in https://github.com/llvm/llvm-project/pull/84769
66 lines
1.5 KiB
CMake
66 lines
1.5 KiB
CMake
set(LLVM_LINK_COMPONENTS
|
|
core
|
|
native
|
|
MC
|
|
Option
|
|
OrcJit
|
|
OrcDebugging
|
|
OrcShared
|
|
OrcTargetProcess
|
|
Support
|
|
Target
|
|
TargetParser
|
|
TransformUtils
|
|
)
|
|
|
|
if (EMSCRIPTEN AND "lld" IN_LIST LLVM_ENABLE_PROJECTS)
|
|
set(WASM_SRC Wasm.cpp)
|
|
set(WASM_LINK lldWasm)
|
|
set(COMMON_LINK lldCommon)
|
|
endif()
|
|
|
|
add_clang_library(clangInterpreter
|
|
DeviceOffload.cpp
|
|
CodeCompletion.cpp
|
|
IncrementalExecutor.cpp
|
|
IncrementalParser.cpp
|
|
Interpreter.cpp
|
|
InterpreterValuePrinter.cpp
|
|
InterpreterUtils.cpp
|
|
RemoteJITUtils.cpp
|
|
Value.cpp
|
|
InterpreterValuePrinter.cpp
|
|
${WASM_SRC}
|
|
PARTIAL_SOURCES_INTENDED
|
|
|
|
DEPENDS
|
|
intrinsics_gen
|
|
ClangDriverOptions
|
|
|
|
LINK_LIBS
|
|
clangAST
|
|
clangAnalysis
|
|
clangBasic
|
|
clangCodeGen
|
|
clangDriver
|
|
clangFrontend
|
|
clangFrontendTool
|
|
clangLex
|
|
clangParse
|
|
clangSema
|
|
clangSerialization
|
|
${WASM_LINK}
|
|
${COMMON_LINK}
|
|
)
|
|
|
|
if ((MINGW OR CYGWIN) AND BUILD_SHARED_LIBS)
|
|
# The DLLs are supposed to export all symbols (except for ones that are
|
|
# explicitly hidden). Normally, this is what happens anyway, but if there
|
|
# are symbols that are marked explicitly as dllexport, we'd only export them
|
|
# and nothing else. The Interpreter contains a few cases of such dllexports
|
|
# (for symbols that need to be exported even from standalone exe files);
|
|
# therefore, add --export-all-symbols to make sure we export all symbols
|
|
# despite potential dllexports.
|
|
target_link_options(clangInterpreter PRIVATE LINKER:--export-all-symbols)
|
|
endif()
|