IF YOU WOULD LIKE TO GET AN ACCOUNT, please write an
email to Administrator. User accounts are meant only to access repo
and report issues and/or generate pull requests.
This is a purpose-specific Git hosting for
BaseALT
projects. Thank you for your understanding!
Только зарегистрированные пользователи имеют доступ к сервису!
Для получения аккаунта, обратитесь к администратору.
We know exactly which target triple and features the CompilerInstance
wants, we don't need to (and probably must not) second-guess that. This
brings us closer to upstream clang-repl and also includes the change of
https://reviews.llvm.org/D128853 which is crucial for RISC-V.
I missed this in commit 3ff7c1e8e2 and it seems to work by chance on
macOS, but this is needed on Linux: Before, CLING_JTLINK=1 on x86_64
complained about "Unspported personality pointer encoding 0x00" and
crashed entirely on RISC-V.
We introduce an enum which mirrors the type kind and we use it in the getAs and
castAs operations to allow the compiler/interpreter to see all of the functions
and potentially inline them.
This patch brings the performance to similar levels with what we have in the
master.
These interfaces assume we know the type and we should compare if the underlying
type is the one we expect when using the setters and getters. Unfortunately,
this is not the case and we need to further investigate.
This interface allows us to set a value and deduce its corresponding type very
efficiently. This is useful when we use cling::Value to model input arguments
for a function call in the JIT (eg. via TClingCallFunc).
That patch essentially makes cling::Value to hold a value and a type that
correctly models the compiled code.
The improvements are:
* We provide getX and setX interfaces instead of returning the address for the
non const methods. This allows us to be more consistent in terms of
lifetimes as now users cannot take the address of block of memory which can
be freed by the cling::Value.
* We remove the storage types and we rely on the clang::Type which we have in
the cling::Value.
Here we enumerate most of the builtin types and we the generate template
specializations for all of them which are capable to perform the correct
conversions.
The custom memory manager is only needed to avoid freeing the memory
segments; the default InProcessMemoryManager (which is mostly copied)
already does slab allocation to keep all segments together which is
needed for exception handling support.
A limitation of this rudimentary support is that CLING_DEBUG and
CLING_PROFILE do not work, they need to be registered as plugins.
Add missing `const` in `{DelayCall,MacroDirective}Info::operator==`
and `operator!=`. This fixes the following warnings in C++20
```
interpreter/cling/lib/Interpreter/Transaction.cpp:173:23: warning: ISO C++20 considers use of overloaded operator '!=' (with operand types 'cling::Transaction::DelayCallInfo' and 'cling::Transaction::DelayCallInfo') to be ambiguous despite there being a unique best viable function with non-reversed arguments [-Wambiguous-reversed-operator]
interpreter/cling/lib/Interpreter/Transaction.cpp:218:21: warning: ISO C++20 considers use of overloaded operator '==' (with operand types 'cling::Transaction::MacroDirectiveInfo' and 'cling::Transaction::MacroDirectiveInfo') to be ambiguous despite there being a unique best viable function [-Wambiguous-reversed-operator]
```
The bits/ headers have different include behavior (mostly due to ranges)
that makes it significantly harder to find a configuration working for
C++14, 17, and 20. Instead, create a dedicated modulemap for C++20.
llvm IR naming of private constants (CodeGenModule::createUnnamedGlobalFrom(),
line 1136) will name private symbols without caring about possible name clashes.
We will create these name clashes by marking such private symbols as weak ones,
re-using previously emitted symbols (e.g. in JITDylib::defineImpl() where they
get added to MUDefsOverridden and thus re-used instead of re-emitted).
Let me see what happens when we keep private symbols private. In principle, the
interpreter should have no means fo accessing them from another transaction -
private symbols seem to be function-local ones.
Fixes https://github.com/root-project/root/pull/12183
UNIX terminals, e.g. vt100, send escape sequences for many special
key combinations. Entering the history search mode assigned a specific
meaning to the ESC character and disabled the processing of escape
sequences, thus accidentally printing some characters that are part
of a CSI.
As a workaround, avoid changing the meaning of ESC; users can still
use the well-known `ESC ESC` sequence (or any other editor command,
e.g. move left/right) to exit the history search mode.
This change only affects UNIX terminals.
Closes issue #10209.
These commands, bound respectively to `ESC l` and `ESC u`, should {lower,upper}case
the next word; however, only the first character was changed.
Fixes#10136.
This editor command (usually binded to Ctrl+T), transposes the character located
at the cursor and the one to its left.
However, its behavior was incorrect if the cursor was at end of the line,
invoking `std::string::operator[]()` passing an index that is out of bounds.
In that case, as per GNU Readline behavior, it should swap the two last
characters.
Closes#10133.
This change is equivalent to the popular GNU Readline keybinding
```
"\e[3;5~": kill-word
```
As a requirement, the `[3;5~` CSI was added in StreamReaderUnix.cpp. No
additional changes required to StreamReaderWin.cpp.
Writes the `\033[2J\033[H` sequence to clear the visible part of the screen.
For Windows, this requires to temporarily enable processing of VT control
sequences.
Enable fast word movement à la Xterm (using Ctrl+Left and Ctrl+Right). Most
users coming from a GUI (GTK+, Win32, etc.) will find this convenient, but also
Archlinux users, given that the default `inputrc` file for GNU Readline providesthese bindings (see https://wiki.archlinux.org/title/Readline#Fast_word_movement).
This makes all functions end up in the same text section, which is
important for TCling on macOS to catch exceptions from constructors:
Stack unwinding requires information about program addresses to find
out which objects to destroy and what code should be called to handle
the exception. These addresses are relocated against a single __text
section when loading the produced MachO binary, which breaks if the
call sites of global constructors end up in a separate init section.
Fixes ROOT-10703 and ROOT-10962
(cherry picked from commit 028fcca0fa76111877751df876cf13968be602f9)
This new release includes some improvements:
* Improvements in the array handling in the Error Estimation Framework
* Fixed numerical stability of the pow pushforward
* Fixed handling of for-loop conditions in reverse mode
* LLVM15 Support
See more at: https://github.com/vgvassilev/clad/blob/v1.1/docs/internalDocs/ReleaseNotes.md
The function EnforceInitOrder() was using ImplicitlyDefineFunction()
as a shortcut to define a function returning an int. Future upgrades
of LLVM will add an assert in that function because it is not allowed
to be used when compiling C++, which Cling obviously does.
Do not register LLVMSupport as a library when it should be a component
LLVM component must be registered as LLVM_LINK_COMPONENTS to be
compatible with LLVM Dylib. Otherwise they are loaded twice in the final
binary, once through LLVM Dylmib and once through individual component,
and this results in some options being registered twice.
Fixroot-project/cling#440