5165 Commits

Author SHA1 Message Date
Jonas Hahnfeld
78f9595644 Update registration of atexit handlers
GenericLLVMIRPlatformSupport now declares atexit, which leads to a
duplicate symbol error during startup and fails the transaction.
Completely switch to the provided infrastructure and just override
the helpers to register the functions with our Interpreter.
2023-12-11 08:59:21 +01:00
Jonas Hahnfeld
a1598cba14 Update handling of ElaboratedType in GetFullyQualifiedType
In LLVM 16, we now get ElaboratedType far more often, but they don't
have all namespace qualifiers we need. This fixes the build of the
RooFitCore module, but many other places are likely affected as well.
2023-12-11 08:59:21 +01:00
Jonas Hahnfeld
f62bbfff85 Remove extension of legacy pass manager
adjustPassManager was only used for a few backends, such as AMDGPU
and NVPTX, but not on the CPU architectures we care about.
The DiscriminatorsPass was also removed upstream Clang, see commit
https://github.com/llvm/llvm-project/commit/2978d02681.
2023-12-11 08:59:21 +01:00
Jonas Hahnfeld
6960639412 Adapt to updated forgetDecl signature
The GlobalDecl parameter wasn't used since quite some time.
2023-12-11 08:59:21 +01:00
Jonas Hahnfeld
826478d826 Don't print name of EnumDecl if there is none
The function overload without PrintingPolicy is not available in
LLVM 16, see https://reviews.llvm.org/D134813.
2023-12-11 08:59:21 +01:00
Jonas Hahnfeld
6bfe4c2213 Misc adaptations for updated APIs 2023-12-11 08:59:21 +01:00
Jonas Hahnfeld
3b4ec36268 Set MSVolatile in LangOpts 2023-12-11 08:59:21 +01:00
Jonas Hahnfeld
733c2eadfa Remove PMBuilder members
These two fields don't exist anymore in LLVM 16.
2023-12-11 08:59:21 +01:00
Jonas Hahnfeld
8994be448b Resource directory based on major version only 2023-12-11 08:59:21 +01:00
Jonas Hahnfeld
f4951f96e9 Update InvocationOptions 2023-12-11 08:59:20 +01:00
Jonas Hahnfeld
aa2213e121 Update for new FileNotFound callback 2023-12-11 08:59:20 +01:00
Jonas Hahnfeld
2c98e68e68 Lexer does not expose getLangOpts() anymore
Store a reference ourselves. Also Lexer::isIdentifierBodyChar() was
renamed to Lexer::isAsciiIdentifierContinueChar().
2023-12-11 08:59:20 +01:00
Jonas Hahnfeld
95a4fc8875 Adapt and heavily simplify ClingJITLinkMemoryManager
Now we can just inherit from InProcessMemoryManager and override the
deallocate() method.
2023-12-11 08:59:20 +01:00
Jonas Hahnfeld
799baa2781 Some changes from JITEvaluatedSymbol to ExecutorAddr 2023-12-11 08:59:20 +01:00
Jonas Hahnfeld
1f68ba7928 MultiLevelTemplateArgumentList
... takes a Decl and a boolean argument Final.
2023-12-11 08:59:20 +01:00
Jonas Hahnfeld
15b5de6398 getQualifiedTemplateName takes a TemplateName 2023-12-11 08:59:20 +01:00
Jonas Hahnfeld
85c348828f CompoundStmt::Create takes FPOptionsOverride 2023-12-11 08:59:20 +01:00
Jonas Hahnfeld
d5aec8274b Adapt arguments for updated APIs
Forwarding data (differently) or passing trivial parameters.
2023-12-11 08:59:20 +01:00
Jonas Hahnfeld
fae810094c Misc renamings and type changes 2023-12-11 08:59:20 +01:00
Jonas Hahnfeld
1144ecf217 Update ClingMemoryManager with llvm::Align 2023-12-11 08:59:20 +01:00
Jonas Hahnfeld
fb4be6f374 InclusionDirective takes an clang::OptionalFileEntryRef 2023-12-11 08:59:20 +01:00
Jonas Hahnfeld
490a3a9359 LookupFile takes arguments as ConstSearchDirIterator 2023-12-11 08:59:20 +01:00
Jonas Hahnfeld
2113534493 llvm::Optional::hasValue was renamed to has_value 2023-12-11 08:59:20 +01:00
Jonas Hahnfeld
2213f5ca92 TargetRegistry.h moved to MC/ 2023-12-11 08:59:20 +01:00
Vassil Vassilev
ada3befa98 Bump cling version to 1.1~dev. 2023-12-09 17:44:02 +01:00
Vassil Vassilev
ab81cdcc61 Prepare for releasing cling v1.0 2023-12-09 16:44:07 +01:00
Vassil Vassilev
fa520028cb Add docs how to build from the mono repo 2023-12-09 09:44:03 +01:00
Axel Naumann
33084d36ad Revert "[Cling] Simplify std::tuple/pair value printer"
This reverts commit bfbb58e6f74c38b883ce6e6e096b6c6e44028869.
cling needs to be able to interpret C++11, even if built with C++17.
2023-12-09 09:29:10 +01:00
Jonas Hahnfeld
aacb57ada4 Provide fallback for LLVM_INCLUDE_DIRS
In standalone builds, it could otherwise happen that the variable is
not set during the first CMake invocation and tests fail because they
are unable to locate the LLVM headers.
2023-12-05 15:44:05 +01:00
Axel Naumann
cbd1dcf8da test/Driver/CommandHistory.C: env -u also works on macOS. 2023-12-05 15:44:05 +01:00
Vassil Vassilev
93153b9971 Correctly infer the SDKROOT.
This fixes the -lSystem issues we saw on recent osx platforms.
2023-12-05 14:14:03 +01:00
Vassil Vassilev
8069aa7a73 Handle llvm::Errors correctly.
This fixes several tests on osx.
2023-12-05 14:14:03 +01:00
Jonas Hahnfeld
5cf51d53dd Handle variable templates in DeclUnloader
Fixes #13815
2023-11-30 09:29:02 +01:00
Jonas Hahnfeld
df71846ee9 Refactor unloading of template specializations
Also quite a bit of simplification.

Co-authored-by: Axel Naumann <Axel.Naumann@cern.ch>
2023-11-30 09:29:02 +01:00
Jonas Hahnfeld
788b2b2be7 DeclUnloader: Avoid iterator invalidation
... when unloading template declarations and their specializations.
2023-11-30 09:29:02 +01:00
Jonas Hahnfeld
aeba3fa2c7 DeclUnloader: Remove extra check isInstantiatedInPCH
This effectively reverts commit 74472caaa9 ("[cling] Fixes issue in
DeclUnloader: do not unload templates intantiated in the PCH"), it's
not needed anymore, all tests pass and the snippet in the summary of
https://github.com/root-project/root/pull/4447 works, but it filters
too many declarations from the unloader.
2023-11-30 08:59:08 +01:00
Javier Lopez-Gomez
d3e42235c1 DeclUnloader: do not delete instantiated member functions
The body of member functions of a templated class only gets instantiated
when the function is used.  These `CXXMethodDecl` should not be deleted
from the AST; instead return them to the 'instantiation pending' state.
2023-11-30 08:59:08 +01:00
Javier Lopez-Gomez
33a63913b3 DeclUnloader: remove StaticVarCollector
StaticVarCollector recursively visited descendants of a `FunctionDecl`
node to collect static local variables.  However, these always appear
in the enclosing DeclContext.
2023-11-30 08:59:08 +01:00
Danilo Piparo
a292a61b28 Simplify std::tuple/pair value printer
By using std::apply, now available after moving to C++17,
the implementation can be greatly simplified.
2023-10-18 06:59:05 +02:00
Jonas Hahnfeld
41e07b3b23 Handle length modifiers in IsClassOrFunction
This expands the handling introduced in commit 31e46a65f6 to include
the length modifiers 'short' and 'long' as mentioned back then. It
still doesn't handle the cases of multiple modifiers such as "unsigned
long long int" and "long int unsigned long" (being the same type).

Fixes https://github.com/root-project/root/issues/13288
2023-10-13 10:14:07 +02:00
Jonas Hahnfeld
97485f56de Refactor modifier handling in IsClassOrFunction 2023-10-13 10:14:07 +02:00
Jonas Hahnfeld
a3fa6e22a1 Emit const variables only once (#13614)
Otherwise they are emitted as internal and we get double-construction
and -destruction on the same memory address due to the way we promote
internal declarations in KeepLocalGVPass.

According to upstream tests, the de-duplication doesn't work on Windows
(yet), but I think this problem is severe enough to fix it on the other
platforms sooner rather than later.

Fixes #13429
2023-10-03 17:14:07 +02:00
Javier Lopez-Gomez
45318c5a0e Fix unmatched #pragma clang diagnostic push 2023-08-24 23:44:07 +02:00
Javier Lopez-Gomez
ed8ed246b2 Move helper functions to anonymous namespace at the beginning 2023-08-24 23:44:07 +02:00
Jonas Hahnfeld
dfee35549d Skip IncrementalExecutor for CUDADevice
We don't need it, and with the upgrade to LLVM 16 the NVPTX target
(correctly) errors that there is no (direct) JIT execution support.
2023-08-18 19:29:07 +02:00
Jonas Hahnfeld
345d51a8b0 Fix assertion in ExternalInterpreterSource
As far as I can understand the intent, this wants to check that the
diagnostic is *not* because it's an unsupported AST node.
2023-08-18 19:29:07 +02:00
Jonas Hahnfeld
ba5faff605 Cast to base element type pointer before calling copyArray
(For context, this is important for multi-dimensional constant arrays
as described in ROOT-7016 and tested in Cling's Interfaces/evaluate.C
test. But for reasons unknown to me, the ROOT prompt now seems to have
a different way of handling this case because just reverting commit
d97e4dca363 still works there...)

Instead of using relying on recursive templated calls, perform the
type cast in the ValueExtractionSynthesizer. This has the advantage
of avoiding an ODR violation warning in MultipleInterpreters.C with
LLVM 16 (while unclear if that one is correct or not).
2023-08-18 19:29:07 +02:00
Sergey Linev
0a23c00a1a increase minimal version requirement to 3.5, call before project
Future cmake will no longer support features before version 3.5
Also `cmake_minimum_required` must be called before `project`
2023-08-17 17:44:07 +02:00
Jonas Hahnfeld
76e87e6686 Remove REQUIRES: not_system-windows
Replace it by the standard UNSUPPORTED: system-windows.
2023-08-14 18:44:02 +02:00
Jonas Hahnfeld
bb45512ff6 Stop using triple substrings in UNSUPPORTED
With LLVM 16 and https://reviews.llvm.org/D141007, this will not be
supported anymore. As a replacement, use system-{darwin,linux,windows}.
2023-08-14 18:44:02 +02:00