|
Revision tags: llvmorg-20.1.0, llvmorg-20.1.0-rc3, llvmorg-20.1.0-rc2, llvmorg-20.1.0-rc1, llvmorg-21-init, llvmorg-19.1.7, llvmorg-19.1.6, llvmorg-19.1.5, llvmorg-19.1.4, llvmorg-19.1.3, llvmorg-19.1.2, llvmorg-19.1.1, llvmorg-19.1.0, llvmorg-19.1.0-rc4, llvmorg-19.1.0-rc3, llvmorg-19.1.0-rc2, llvmorg-19.1.0-rc1, llvmorg-20-init, llvmorg-18.1.8, llvmorg-18.1.7, llvmorg-18.1.6, llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3, llvmorg-18.1.2, llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3, llvmorg-18.1.0-rc2, llvmorg-18.1.0-rc1, llvmorg-19-init, llvmorg-17.0.6, llvmorg-17.0.5, llvmorg-17.0.4, llvmorg-17.0.3, llvmorg-17.0.2, llvmorg-17.0.1, llvmorg-17.0.0, llvmorg-17.0.0-rc4, llvmorg-17.0.0-rc3, llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1, llvmorg-18-init, llvmorg-16.0.6, llvmorg-16.0.5, llvmorg-16.0.4, llvmorg-16.0.3, llvmorg-16.0.2, llvmorg-16.0.1, llvmorg-16.0.0, llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3, llvmorg-16.0.0-rc2, llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7, llvmorg-15.0.6, llvmorg-15.0.5, llvmorg-15.0.4, llvmorg-15.0.3, llvmorg-15.0.2, llvmorg-15.0.1, llvmorg-15.0.0, llvmorg-15.0.0-rc3, llvmorg-15.0.0-rc2, llvmorg-15.0.0-rc1, llvmorg-16-init |
|
| #
f22795de |
| 29-Jun-2022 |
Jonas Hahnfeld <[email protected]> |
[Interpreter] Pass target features to JIT
This is required to support RISC-V where the '+d' target feature indicates the presence of the D instruction set extension, which changes to the Hard-float
[Interpreter] Pass target features to JIT
This is required to support RISC-V where the '+d' target feature indicates the presence of the D instruction set extension, which changes to the Hard-float 'd' ABI.
Differential Revision: https://reviews.llvm.org/D128853
show more ...
|
| #
45b6c381 |
| 26-Jun-2022 |
Sunho Kim <[email protected]> |
Revert "[clang-repl] Support destructors of global objects."
This reverts commit 9de8b05bfe0de2915d2443d06159396c5f9d389f.
|
|
Revision tags: llvmorg-14.0.6 |
|
| #
dea5a9cc |
| 19-Jun-2022 |
Jun Zhang <[email protected]> |
[clang-repl] Implement code undo.
In interactive C++ it is convenient to roll back to a previous state of the compiler. For example: clang-repl> int x = 42; clang-repl> %undo clang-repl> float x = 2
[clang-repl] Implement code undo.
In interactive C++ it is convenient to roll back to a previous state of the compiler. For example: clang-repl> int x = 42; clang-repl> %undo clang-repl> float x = 24 // not an error
To support this, the patch extends the functionality used to recover from errors and adds functionality to recover the low-level execution infrastructure.
The current implementation is based on watermarks. It exploits the fact that at each incremental input the underlying compiler infrastructure is in a valid state. We can only go N incremental inputs back to a previous valid state. We do not need and do not do any further dependency tracking.
This patch was co-developed with V. Vassilev, relies on the past work of Purva Chaudhari in clang-repl and is inspired by the past work on the same feature in the Cling interpreter.
Co-authored-by: Purva-Chaudhari <[email protected]> Co-authored-by: Vassil Vassilev <[email protected]> Signed-off-by: Jun Zhang <[email protected]>
show more ...
|
| #
9de8b05b |
| 26-Jun-2022 |
Sunho Kim <[email protected]> |
[clang-repl] Support destructors of global objects.
Supports destructors of global objects by properly calling jitdylib deinitialize which calls the global dtors of ir modules.
This supersedes http
[clang-repl] Support destructors of global objects.
Supports destructors of global objects by properly calling jitdylib deinitialize which calls the global dtors of ir modules.
This supersedes https://reviews.llvm.org/D127945. There was an issue when calling deinitialize on windows but it got fixed by https://reviews.llvm.org/D128037.
Reviewed By: v.g.vassilev
Differential Revision: https://reviews.llvm.org/D128589
show more ...
|
|
Revision tags: llvmorg-14.0.5, llvmorg-14.0.4 |
|
| #
16dcbb53 |
| 05-May-2022 |
Lang Hames <[email protected]> |
[ORC] Return ExecutorAddrs rather than JITEvaluatedSymbols from LLJIT::lookup.
Clients don't care about linkage, and ExecutorAddr is much more ergonomic.
|
|
Revision tags: llvmorg-14.0.3, llvmorg-14.0.2, llvmorg-14.0.1, llvmorg-14.0.0, llvmorg-14.0.0-rc4, llvmorg-14.0.0-rc3, llvmorg-14.0.0-rc2, llvmorg-14.0.0-rc1, llvmorg-15-init, llvmorg-13.0.1, llvmorg-13.0.1-rc3, llvmorg-13.0.1-rc2, llvmorg-13.0.1-rc1, llvmorg-13.0.0, llvmorg-13.0.0-rc4, llvmorg-13.0.0-rc3 |
|
| #
4fb0805c |
| 30-Aug-2021 |
Vassil Vassilev <[email protected]> |
[clang-repl] Allow Interpreter::getSymbolAddress to take a mangled name.
|
| #
c24a5808 |
| 25-Oct-2021 |
Vassil Vassilev <[email protected]> |
Reinstate "[clang-repl] Re-implement clang-interpreter as a test case."
Original commit message: " Original commit message: " Original commit message: " Original commit message:"
Reinstate "[clang-repl] Re-implement clang-interpreter as a test case."
Original commit message: " Original commit message: " Original commit message: " Original commit message:" The current infrastructure in lib/Interpreter has a tool, clang-repl, very similar to clang-interpreter which also allows incremental compilation.
This patch moves clang-interpreter as a test case and drops it as conditionally built example as we already have clang-repl in place. "
This patch also ignores ppc due to missing weak symbol for __gxx_personality_v0 which may be a feature request for the jit infrastructure. Also, adds a missing build system dependency to the orc jit. "
Additionally, this patch defines a custom exception type and thus avoids the requirement to include header <exception>, making it easier to deploy across systems without standard location of the c++ headers. "
This patch also works around PR49692 and finds a way to use llvm::consumeError in rtti mode. "
This patch also checks if stl is built with rtti.
Differential revision: https://reviews.llvm.org/D107049
show more ...
|
| #
04aff395 |
| 09-Oct-2021 |
Leonard Chan <[email protected]> |
Revert "Reland "[clang-repl] Re-implement clang-interpreter as a test case.""
This reverts commit 1dba6b37bdc70210f75a480eff3715ebe1f1d8be.
Reverting because the ClangReplInterpreterExceptionTests
Revert "Reland "[clang-repl] Re-implement clang-interpreter as a test case.""
This reverts commit 1dba6b37bdc70210f75a480eff3715ebe1f1d8be.
Reverting because the ClangReplInterpreterExceptionTests test fails on our builders with this patch.
show more ...
|
| #
1dba6b37 |
| 05-Oct-2021 |
Vassil Vassilev <[email protected]> |
Reland "[clang-repl] Re-implement clang-interpreter as a test case."
Original commit message: " Original commit message: " Original commit message:" The current infrastructur
Reland "[clang-repl] Re-implement clang-interpreter as a test case."
Original commit message: " Original commit message: " Original commit message:" The current infrastructure in lib/Interpreter has a tool, clang-repl, very similar to clang-interpreter which also allows incremental compilation.
This patch moves clang-interpreter as a test case and drops it as conditionally built example as we already have clang-repl in place.
Differential revision: https://reviews.llvm.org/D107049 "
This patch also ignores ppc due to missing weak symbol for __gxx_personality_v0 which may be a feature request for the jit infrastructure. Also, adds a missing build system dependency to the orc jit. "
Additionally, this patch defines a custom exception type and thus avoids the requirement to include header <exception>, making it easier to deploy across systems without standard location of the c++ headers. "
This patch also works around PR49692 and finds a way to use llvm::consumeError in rtti mode.
Differential revision: https://reviews.llvm.org/D107049
show more ...
|
| #
88596404 |
| 03-Sep-2021 |
Vassil Vassilev <[email protected]> |
Revert "Reland "[clang-repl] Re-implement clang-interpreter as a test case.""
This reverts commit 6fe2beba7d2a41964af658c8c59dd172683ef739 which fails on clang-hexagon-elf
|
| #
6fe2beba |
| 03-Sep-2021 |
Vassil Vassilev <[email protected]> |
Reland "[clang-repl] Re-implement clang-interpreter as a test case." Original commit message: " Original commit message:" The current infrastructure in lib/Interpreter has a tool, clang-rep
Reland "[clang-repl] Re-implement clang-interpreter as a test case." Original commit message: " Original commit message:" The current infrastructure in lib/Interpreter has a tool, clang-repl, very similar to clang-interpreter which also allows incremental compilation.
This patch moves clang-interpreter as a test case and drops it as conditionally built example as we already have clang-repl in place.
Differential revision: https://reviews.llvm.org/D107049 "
This patch also ignores ppc due to missing weak symbol for __gxx_personality_v0 which may be a feature request for the jit infrastructure. Also, adds a missing build system dependency to the orc jit. "
Additionally, this patch defines a custom exception type and thus avoids the requirement to include header <exception>, making it easier to deploy across systems without standard location of the c++ headers.
Differential revision: https://reviews.llvm.org/D107049
show more ...
|
| #
9b6c8132 |
| 01-Sep-2021 |
Nico Weber <[email protected]> |
Revert "Reland "[clang-repl] Re-implement clang-interpreter as a test case.""
This reverts commit f0514a4d26100239088f08d618f2ba100f59958e. Test fails on macOS: https://reviews.llvm.org/D107049#2976
Revert "Reland "[clang-repl] Re-implement clang-interpreter as a test case.""
This reverts commit f0514a4d26100239088f08d618f2ba100f59958e. Test fails on macOS: https://reviews.llvm.org/D107049#2976603
show more ...
|
| #
f0514a4d |
| 01-Sep-2021 |
Vassil Vassilev <[email protected]> |
Reland "[clang-repl] Re-implement clang-interpreter as a test case."
Original commit message:" The current infrastructure in lib/Interpreter has a tool, clang-repl, very similar to clang-interpr
Reland "[clang-repl] Re-implement clang-interpreter as a test case."
Original commit message:" The current infrastructure in lib/Interpreter has a tool, clang-repl, very similar to clang-interpreter which also allows incremental compilation.
This patch moves clang-interpreter as a test case and drops it as conditionally built example as we already have clang-repl in place.
Differential revision: https://reviews.llvm.org/D107049 "
This patch also ignores ppc due to missing weak symbol for __gxx_personality_v0 which may be a feature request for the jit infrastructure. Also, adds a missing build system dependency to the orc jit.
show more ...
|
| #
04bbd189 |
| 01-Sep-2021 |
Vassil Vassilev <[email protected]> |
Revert "[clang-repl] Re-implement clang-interpreter as a test case."
This reverts commit 319ce98011742141dad8dd95a2f9de9c0449be5c because it fails on various platforms.
|
|
Revision tags: llvmorg-13.0.0-rc2, llvmorg-13.0.0-rc1 |
|
| #
319ce980 |
| 29-Jul-2021 |
Vassil Vassilev <[email protected]> |
[clang-repl] Re-implement clang-interpreter as a test case.
The current infrastructure in lib/Interpreter has a tool, clang-repl, very similar to clang-interpreter which also allows incremental comp
[clang-repl] Re-implement clang-interpreter as a test case.
The current infrastructure in lib/Interpreter has a tool, clang-repl, very similar to clang-interpreter which also allows incremental compilation.
This patch moves clang-interpreter as a test case and drops it as conditionally built example as we already have clang-repl in place.
Differential revision: https://reviews.llvm.org/D107049
show more ...
|
|
Revision tags: llvmorg-14-init, llvmorg-12.0.1, llvmorg-12.0.1-rc4, llvmorg-12.0.1-rc3, llvmorg-12.0.1-rc2, llvmorg-12.0.1-rc1 |
|
| #
49f95321 |
| 21-May-2021 |
Vassil Vassilev <[email protected]> |
[clang-repl] Tell the LLJIT the exact target triple we use.
Some systems use a different data layout. For instance, s390x the layout of machines with vector registers is different from the ones with
[clang-repl] Tell the LLJIT the exact target triple we use.
Some systems use a different data layout. For instance, s390x the layout of machines with vector registers is different from the ones without. In such cases, the JIT will automatically detect the vector registers and go out of sync.
This patch tells the JIT what is the target triple of the generated code so that both ends are in sync.
Discussion available in https://reviews.llvm.org/D96033. Thanks to @uweigand for helping understand the issue.
Differential revision https://reviews.llvm.org/D102756
show more ...
|
| #
92f9852f |
| 13-May-2021 |
Vassil Vassilev <[email protected]> |
[clang-repl] Recommit "Land initial infrastructure for incremental parsing"
Original commit message:
In http://lists.llvm.org/pipermail/llvm-dev/2020-July/143257.html we have mentioned our plan
[clang-repl] Recommit "Land initial infrastructure for incremental parsing"
Original commit message:
In http://lists.llvm.org/pipermail/llvm-dev/2020-July/143257.html we have mentioned our plans to make some of the incremental compilation facilities available in llvm mainline.
This patch proposes a minimal version of a repl, clang-repl, which enables interpreter-like interaction for C++. For instance:
./bin/clang-repl clang-repl> int i = 42; clang-repl> extern "C" int printf(const char*,...); clang-repl> auto r1 = printf("i=%d\n", i); i=42 clang-repl> quit
The patch allows very limited functionality, for example, it crashes on invalid C++. The design of the proposed patch follows closely the design of cling. The idea is to gather feedback and gradually evolve both clang-repl and cling to what the community agrees upon.
The IncrementalParser class is responsible for driving the clang parser and codegen and allows the compiler infrastructure to process more than one input. Every input adds to the “ever-growing” translation unit. That model is enabled by an IncrementalAction which prevents teardown when HandleTranslationUnit.
The IncrementalExecutor class hides some of the underlying implementation details of the concrete JIT infrastructure. It exposes the minimal set of functionality required by our incremental compiler/interpreter.
The Transaction class keeps track of the AST and the LLVM IR for each incremental input. That tracking information will be later used to implement error recovery.
The Interpreter class orchestrates the IncrementalParser and the IncrementalExecutor to model interpreter-like behavior. It provides the public API which can be used (in future) when using the interpreter library.
Differential revision: https://reviews.llvm.org/D96033
show more ...
|
| #
44a40001 |
| 12-May-2021 |
Vassil Vassilev <[email protected]> |
[clang-repl] Land initial infrastructure for incremental parsing
In http://lists.llvm.org/pipermail/llvm-dev/2020-July/143257.html we have mentioned our plans to make some of the incremental compila
[clang-repl] Land initial infrastructure for incremental parsing
In http://lists.llvm.org/pipermail/llvm-dev/2020-July/143257.html we have mentioned our plans to make some of the incremental compilation facilities available in llvm mainline.
This patch proposes a minimal version of a repl, clang-repl, which enables interpreter-like interaction for C++. For instance:
./bin/clang-repl clang-repl> int i = 42; clang-repl> extern "C" int printf(const char*,...); clang-repl> auto r1 = printf("i=%d\n", i); i=42 clang-repl> quit
The patch allows very limited functionality, for example, it crashes on invalid C++. The design of the proposed patch follows closely the design of cling. The idea is to gather feedback and gradually evolve both clang-repl and cling to what the community agrees upon.
The IncrementalParser class is responsible for driving the clang parser and codegen and allows the compiler infrastructure to process more than one input. Every input adds to the “ever-growing” translation unit. That model is enabled by an IncrementalAction which prevents teardown when HandleTranslationUnit.
The IncrementalExecutor class hides some of the underlying implementation details of the concrete JIT infrastructure. It exposes the minimal set of functionality required by our incremental compiler/interpreter.
The Transaction class keeps track of the AST and the LLVM IR for each incremental input. That tracking information will be later used to implement error recovery.
The Interpreter class orchestrates the IncrementalParser and the IncrementalExecutor to model interpreter-like behavior. It provides the public API which can be used (in future) when using the interpreter library.
Differential revision: https://reviews.llvm.org/D96033
show more ...
|