History log of /llvm-project/clang/lib/Interpreter/Interpreter.cpp (Results 1 – 25 of 89)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
Revision tags: llvmorg-21-init, llvmorg-19.1.7, llvmorg-19.1.6
# 61ab36a3 14-Dec-2024 Davide Italiano <davidino@meta.com>

Revert "[Clang-REPL] Fix crash during `__run_exit_handlers` with dynamic libraries. (#117475)"

This reverts commit 30ad53b92cec0cff9679d559edcc5b933312ba0c as it breaks
systems that don't have a sys

Revert "[Clang-REPL] Fix crash during `__run_exit_handlers` with dynamic libraries. (#117475)"

This reverts commit 30ad53b92cec0cff9679d559edcc5b933312ba0c as it breaks
systems that don't have a systemwide libc++ or libstdc++ installed. It should
be rewritten to not invoke the system linker. In the meanwhile, reverting
to unblock the bots.

show more ...


# 30ad53b9 10-Dec-2024 SahilPatidar <patidarsahil2001@gmail.com>

[Clang-REPL] Fix crash during `__run_exit_handlers` with dynamic libraries. (#117475)

Apply the fix suggested by Lang Hames to address a crash in Clang-REPL
that occurs during the execution of `__r

[Clang-REPL] Fix crash during `__run_exit_handlers` with dynamic libraries. (#117475)

Apply the fix suggested by Lang Hames to address a crash in Clang-REPL
that occurs during the execution of `__run_exit_handlers` when using
dynamic libraries.

show more ...


# da24c024 06-Dec-2024 Anutosh Bhat <andersonbhat491@gmail.com>

[clang-repl] Remove redundant shared flag while running clang-repl in browser (#118107)

While running clang-repl in the browser, we would be interested in this
cc1 command

`
"" -cc1 -triple was

[clang-repl] Remove redundant shared flag while running clang-repl in browser (#118107)

While running clang-repl in the browser, we would be interested in this
cc1 command

`
"" -cc1 -triple wasm32-unknown-emscripten -emit-obj -disable-free
-clear-ast-before-backend -disable-llvm-verifier -discard-value-names
-main-file-name "<<< inputs >>>" -mrelocation-model static
-mframe-pointer=none -ffp-contract=on -fno-rounding-math
-mconstructor-aliases -target-cpu generic -debugger-tuning=gdb
-fdebug-compilation-dir=/ -v -fcoverage-compilation-dir=/ -resource-dir
/lib/clang/19 -internal-isystem /include/wasm32-emscripten/c++/v1
-internal-isystem /include/c++/v1 -internal-isystem
/lib/clang/19/include -internal-isystem /include/wasm32-emscripten
-internal-isystem /include -std=c++17 -fdeprecated-macro -ferror-limit
19 -fvisibility=default -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf
-fcxx-exceptions -fexceptions -fincremental-extensions -o "<<< inputs
>>>.o" -x c++ "<<< inputs >>>"
`

As can be seen `shared` is anyway overwritten by `static` which is also
what would be provided by default. Hence we can get rid of the shared
flag here.

show more ...


Revision tags: llvmorg-19.1.5
# a174aa1e 29-Nov-2024 Anutosh Bhat <andersonbhat491@gmail.com>

[clang-repl] Fix generation of wasm binaries while running clang-repl in browser (#117978)

Co-authored-by: Vassil Vassilev <v.g.vassilev@gmail.com>


# df9a14d7 21-Nov-2024 Kadir Cetinkaya <kadircet@google.com>

Reapply "[NFC] Explicitly pass a VFS when creating DiagnosticsEngine (#115852)"

This reverts commit a1153cd6fedd4c906a9840987934ca4712e34cb2 with fixes
to lldb breakages.

Fixes https://github.com/l

Reapply "[NFC] Explicitly pass a VFS when creating DiagnosticsEngine (#115852)"

This reverts commit a1153cd6fedd4c906a9840987934ca4712e34cb2 with fixes
to lldb breakages.

Fixes https://github.com/llvm/llvm-project/issues/117145.

show more ...


# a1153cd6 21-Nov-2024 Sylvestre Ledru <sylvestre@debian.org>

Revert "[NFC] Explicitly pass a VFS when creating DiagnosticsEngine (#115852)"

Reverted for causing:
https://github.com/llvm/llvm-project/issues/117145

This reverts commit bdd10d9d249bd1c2a45e3de56

Revert "[NFC] Explicitly pass a VFS when creating DiagnosticsEngine (#115852)"

Reverted for causing:
https://github.com/llvm/llvm-project/issues/117145

This reverts commit bdd10d9d249bd1c2a45e3de56a5accd97e953458.

show more ...


# bdd10d9d 21-Nov-2024 kadir çetinkaya <kadircet@google.com>

[NFC] Explicitly pass a VFS when creating DiagnosticsEngine (#115852)

Starting with 41e3919ded78d8870f7c95e9181c7f7e29aa3cc4 DiagnosticsEngine
creation might perform IO. It was implicitly defaultin

[NFC] Explicitly pass a VFS when creating DiagnosticsEngine (#115852)

Starting with 41e3919ded78d8870f7c95e9181c7f7e29aa3cc4 DiagnosticsEngine
creation might perform IO. It was implicitly defaulting to
getRealFileSystem. This patch makes it explicit by pushing the decision
making to callers.

It uses ambient VFS if one is available, and keeps using
`getRealFileSystem` if there aren't any VFS.

show more ...


# a8744066 19-Nov-2024 Vassil Vassilev <v.g.vassilev@gmail.com>

[clang-repl] Include consistency using the default clang actions. (#116610)

This patch improves the code reuse of the actions system and adds
several improvements for easier debugging via clang-rep

[clang-repl] Include consistency using the default clang actions. (#116610)

This patch improves the code reuse of the actions system and adds
several improvements for easier debugging via clang-repl
--debug-only=clang-repl.

The change inimproves the consistency of the TUKind when actions are
handled within a WrapperFrontendAction. In this case instead of falling
back to default TU_Complete, we forward to the TUKind of the ASTContext
which presumably was created by the intended action. This enables the
incremental infrastructure to reuse code.

This patch also clones the first llvm::Module because the first PTU now
can come from -include A.h and the presumption of llvm::Module being
empty does not hold. The changes are a first step to fix the issues with
`clang-repl --cuda`.

show more ...


Revision tags: llvmorg-19.1.4
# 752dbd61 19-Nov-2024 Anutosh Bhat <andersonbhat491@gmail.com>

[clang-repl] Improve flags responsible for generating shared wasm binaries (#116735)

There are a couple changes in this PR that help getting clang-repl to
run in the browser. Using a jupyterlite in

[clang-repl] Improve flags responsible for generating shared wasm binaries (#116735)

There are a couple changes in this PR that help getting clang-repl to
run in the browser. Using a jupyterlite instance for the example pasted
below

1) Updating flags responsible for generating shared wasm binaries that
need to be dynamically loaded Most Importantly as can be seen in the
changes `shared` and `allow-undefined` are crucial.



![image](https://github.com/user-attachments/assets/1183fd44-8951-496a-899a-e4af39a48447)

2) While exiting we encounter this.



![image](https://github.com/user-attachments/assets/9487a3f4-7200-471d-ba88-09e98ccbc47a)


Now as can be seen here


https://github.com/llvm/llvm-project/blob/cd418030de7ae75750bc4e48d1238baf03c675e5/clang/lib/Interpreter/Interpreter.cpp#L421-L430

We call cleanUP in the destructor. Now cleanUP through
IncrementalExecutor tries to deinitialize the JIT which wasn't even
intialized as runCtors in wasm.cpp is a no-op


https://github.com/llvm/llvm-project/blob/cd418030de7ae75750bc4e48d1238baf03c675e5/clang/lib/Interpreter/IncrementalExecutor.cpp#L94-L101


https://github.com/llvm/llvm-project/blob/cd418030de7ae75750bc4e48d1238baf03c675e5/clang/lib/Interpreter/Wasm.cpp#L107-L109

show more ...


# ebb35088 12-Nov-2024 SahilPatidar <patidarsahil2001@gmail.com>

Revert "[Clang-Repl] Add support for out-of-process execution." (#115854)

Reverts llvm/llvm-project#110418

Buildbot encountered a failure.


# 3183b3aa 12-Nov-2024 SahilPatidar <patidarsahil2001@gmail.com>

[Clang-Repl] Add support for out-of-process execution. (#110418)

This PR introduces out-of-process (OOP) execution support for
Clang-Repl. With this enhancement, two new flags, `oop-executor` and

[Clang-Repl] Add support for out-of-process execution. (#110418)

This PR introduces out-of-process (OOP) execution support for
Clang-Repl. With this enhancement, two new flags, `oop-executor` and
`oop-executor-connect`, are added to the Clang-Repl interface. These
flags enable the launch of an external executor
(`llvm-jitlink-executor`), which handles code execution in a separate
process.

show more ...


Revision tags: llvmorg-19.1.3, llvmorg-19.1.2, llvmorg-19.1.1
# a72d7eea 23-Sep-2024 Vassil Vassilev <v.g.vassilev@gmail.com>

[clang-repl] Simplify the value printing logic to enable out-of-process. (#107737)

This patch improves the design of the IncrementalParser and Interpreter
classes. Now the incremental parser is onl

[clang-repl] Simplify the value printing logic to enable out-of-process. (#107737)

This patch improves the design of the IncrementalParser and Interpreter
classes. Now the incremental parser is only responsible for building the
partial translation unit declaration and the AST, while the Interpreter
fills in the lower level llvm::Module and other JIT-related
infrastructure. Finally the Interpreter class now orchestrates the AST
and the LLVM IR with the IncrementalParser and IncrementalExecutor
classes.

The design improvement allows us to rework some of the logic that
extracts an interpreter value into the clang::Value object. The new
implementation simplifies use-cases which are used for out-of-process
execution by allowing interpreter to be inherited or customized with an
clang::ASTConsumer.

This change will enable completing the pretty printing work which is in
llvm/llvm-project#84769

show more ...


Revision tags: llvmorg-19.1.0, llvmorg-19.1.0-rc4, llvmorg-19.1.0-rc3, llvmorg-19.1.0-rc2, llvmorg-19.1.0-rc1
# d64eccf4 23-Jul-2024 Chuanqi Xu <yedeng.yd@linux.alibaba.com>

[clang] Split ObjectFilePCHContainerReader from ObjectFilePCHContainerWriter (#99599)

Close https://github.com/llvm/llvm-project/issues/99479

See https://github.com/llvm/llvm-project/issues/99479

[clang] Split ObjectFilePCHContainerReader from ObjectFilePCHContainerWriter (#99599)

Close https://github.com/llvm/llvm-project/issues/99479

See https://github.com/llvm/llvm-project/issues/99479 for details

show more ...


Revision tags: llvmorg-20-init
# 1787d4b2 03-Jul-2024 Stefan Gränitz <stefan.graenitz@gmail.com>

[clang-repl] Fix RuntimeInterfaceBuilder for 32-bit systems (#97071)

When generating runtime interface bindings, extend integral types to the
native register size rather than 64-bit per se

Fixes

[clang-repl] Fix RuntimeInterfaceBuilder for 32-bit systems (#97071)

When generating runtime interface bindings, extend integral types to the
native register size rather than 64-bit per se

Fixes #94994

show more ...


# 9a9546e3 02-Jul-2024 Vassil Vassilev <v.g.vassilev@gmail.com>

[clang-repl] Support wasm execution (#86402)

This commit introduces support for running clang-repl and executing C++
code interactively inside a Javascript engine using WebAssembly when
built with

[clang-repl] Support wasm execution (#86402)

This commit introduces support for running clang-repl and executing C++
code interactively inside a Javascript engine using WebAssembly when
built with Emscripten. This is achieved by producing WASM "shared
libraries" that can be loaded by the Emscripten runtime using dlopen()

More discussion is available in https://reviews.llvm.org/D158140

Co-authored-by: Anubhab Ghosh <anubhabghosh.me@gmail.com>

show more ...


Revision tags: llvmorg-18.1.8
# 7091dfc0 06-Jun-2024 Vassil Vassilev <v.g.vassilev@gmail.com>

[clang-repl] Lay the foundation of pretty printing for C. (#89811)


Revision tags: llvmorg-18.1.7
# cb7995a1 28-May-2024 Stefan Gränitz <stefan.graenitz@gmail.com>

[clang-repl] Set up executor implicitly to account for init PTUs (#84758)

Until now the IncrExecutor was created lazily on the first execution
request. In order to process the PTUs that come from

[clang-repl] Set up executor implicitly to account for init PTUs (#84758)

Until now the IncrExecutor was created lazily on the first execution
request. In order to process the PTUs that come from initialization, we
have to do it upfront implicitly.

show more ...


Revision tags: llvmorg-18.1.6, llvmorg-18.1.5
# 458328ae 17-Apr-2024 Vlad Serebrennikov <serebrennikov.vladislav@gmail.com>

[clang][NFC] Refactor `Sema::RedeclarationKind`

This patch converts the enum into scoped enum, and moves it into its own header for the time being. It's definition is needed in `Sema.h`, and is goin

[clang][NFC] Refactor `Sema::RedeclarationKind`

This patch converts the enum into scoped enum, and moves it into its own header for the time being. It's definition is needed in `Sema.h`, and is going to be needed in upcoming `SemaObjC.h`. `Lookup.h` can't hold it, because it includes `Sema.h`.

show more ...


Revision tags: llvmorg-18.1.4, llvmorg-18.1.3
# 0cf4788d 25-Mar-2024 Stefan Gränitz <stefan.graenitz@gmail.com>

[clang-repl] Factor out CreateJITBuilder() and allow specialization in derived classes (#84461)

The LLJITBuilder interface provides a very convenient way to configure
the ORCv2 JIT engine. Incremen

[clang-repl] Factor out CreateJITBuilder() and allow specialization in derived classes (#84461)

The LLJITBuilder interface provides a very convenient way to configure
the ORCv2 JIT engine. IncrementalExecutor already used it internally to
construct the JIT, but didn't provide external access. This patch lifts
control of the creation process to the Interpreter and allows injection
of a custom instance through the extended interface. The Interpreter's
default behavior remains unchanged and the IncrementalExecutor remains
an implementation detail.

show more ...


Revision tags: llvmorg-18.1.2
# bde7a6b7 12-Mar-2024 Stefan Gränitz <stefan.graenitz@gmail.com>

[clang-repl] Expose CreateExecutor() and ResetExecutor() in extended Interpreter interface (#84460)

IncrementalExecutor is an implementation detail of the Interpreter. In
order to test extended fea

[clang-repl] Expose CreateExecutor() and ResetExecutor() in extended Interpreter interface (#84460)

IncrementalExecutor is an implementation detail of the Interpreter. In
order to test extended features properly, we must be able to setup and
tear down the executor manually.

show more ...


# aec92830 11-Mar-2024 Stefan Gränitz <stefan.graenitz@gmail.com>

[clang-repl] Refactor locking of runtime PTU stack (NFC) (#84176)

The Interpreter locks PTUs that originate from implicit runtime code and
initialization to prevent users from undoing them accident

[clang-repl] Refactor locking of runtime PTU stack (NFC) (#84176)

The Interpreter locks PTUs that originate from implicit runtime code and
initialization to prevent users from undoing them accidentally.

The previous implementation seemed hacky, because it required the reader
to be familiar with the internal workings of the PTU stack. The concept
itself is a pragmatic solution and not very surprising. This patch
introduces a function for it and adds a comment.

show more ...


# ec2875ce 11-Mar-2024 Stefan Gränitz <stefan.graenitz@gmail.com>

[clang-repl] Expose RuntimeInterfaceBuilder to allow customization (#83126)

RuntimeInterfaceBuilder wires up JITed expressions with the hardcoded
Interpreter runtime. It's used only for value print

[clang-repl] Expose RuntimeInterfaceBuilder to allow customization (#83126)

RuntimeInterfaceBuilder wires up JITed expressions with the hardcoded
Interpreter runtime. It's used only for value printing right now, but it
is not limited to that. The default implementation focuses on an
evaluation process where the Interpreter has direct access to the memory
of JITed expressions (in-process execution or shared memory).

We need a different approach to support out-of-process evaluation or
variations of the runtime. It seems reasonable to expose a minimal
interface for it. The new RuntimeInterfaceBuilder is an abstract base
class in the public header. For that, the TypeVisitor had to become a
component (instead of inheriting from it). FindRuntimeInterface() was
adjusted to return an instance of the RuntimeInterfaceBuilder and it can
be overridden from derived classes.

show more ...


Revision tags: llvmorg-18.1.1
# 2a4a852a 06-Mar-2024 Stefan Gränitz <stefan.graenitz@gmail.com>

Reland [clang-repl] Expose setter for triple in IncrementalCompilerBuilder (#84174)

With out-of-process execution the target triple can be different from
the one on the host. We need an interface to

Reland [clang-repl] Expose setter for triple in IncrementalCompilerBuilder (#84174)

With out-of-process execution the target triple can be different from
the one on the host. We need an interface to configure it.

Relanding this with cleanup-fixes in the unittest.

show more ...


# 6a39a714 07-Mar-2024 Stefan Gränitz <stefan.graenitz@gmail.com>

Revert "[clang-repl] Pass triple to IncrementalCompilerBuilder as explicit argument" (#84261)

Reverts llvm/llvm-project#84174 due too sanitizer memory leak detection


# 6494f9bb 06-Mar-2024 Stefan Gränitz <stefan.graenitz@gmail.com>

[clang-repl] Expose setter for triple in IncrementalCompilerBuilder (#84174)

With out-of-process execution the target triple can be different from
the one on the host. We need an interface to confi

[clang-repl] Expose setter for triple in IncrementalCompilerBuilder (#84174)

With out-of-process execution the target triple can be different from
the one on the host. We need an interface to configure it.

show more ...


1234