[WPD] Don't perform virtual constant propagation for interposable functions (#204317)
We can't do constant propagation through interposable functions, as the
definition we see may not be the prevailing one. Doing it through
inexact definitions (linkonce_odr) is fine.
TBH, I'm not completely sure whether this is necessary, maybe there is
some precondition for this pass (given that it's whole-program) that
makes it unnecessary. This behavior came up in
https://github.com/llvm/llvm-project/pull/203304.
[InstCombine] Re-queue users after freezeOtherUses rewrites their operands (#202306)
`freezeOtherUses()` rewrites dominated uses to a single frozen copy, but
does not re-queue the rewritten users. Any fold enabled by the rewrite
is therefore left for the next InstCombine iteration, which breaks the
expected single-iteration fixpoint and requires
`instcombine-no-verify-fixpoint` in the affected tests.
Re-queue each rewritten user and its users so the newly exposed folds
are visited in the same iteration.
[mlir][tblgen]: forward overloaded interface methods to external models (#203507)
The FallbackModel/ExternalModel forwarders generated for an OpInterface
dispatched to the concrete model by the method's unique name (e.g.
`getOverloadedValue_1`), whereas the Model path already forwards by the
method's source name. For an interface that overloads a method this
prevents an external model from overriding an overload by its real name.
Forward by the source name in both paths so external models can
implement overloaded interface methods. No change for non-overloaded
methods, where the unique and source names coincide.
Previously, the external model interfaces exposed the internal name
mangling that we do for overloaded methods to the implementers,
prohibiting them from overriding these. This PR fixes that and hides the
internal name mangling from the implementers/users, and exposes source
names for overloaded methods, symmetrically to the `Model` case. E.g.
this PR allows:
```cpp
[33 lines not shown]
[offload][OpenMP] Fix record replay when no memory is used
Progams that do not use any memory (e.g., no mappings) were failing because
we were trying to execute zero size transfers.
[clang][cmake] Disable exceptions for ASan runtime on Fuchsia (#204512)
Fuchsia's default runtime environment prefers no-exceptions. Compiling
the C++ slice of ASan (asan_new_delete.cpp) with exceptions introduces
dependencies on EH symbols
(__cxa_begin_catch, etc.) in libclang_rt.asan.so. This causes link
failures when linking ASan-enabled binaries with noexcept libc++abi.
Explicitly disable COMPILER_RT_ASAN_ENABLE_EXCEPTIONS for Fuchsia
targets in the stage2 cache.
[X86] Simplify duplicate MMO offset tracking in breakBlockedCopies (NFC) (#202904)
LMMOffset and SMMOffset in breakBlockedCopies/buildCopies/buildCopy were
both initialized to 0 and advanced in lockstep by identical amounts, so
they were always equal. Collapse them into a single Offset used for both
the load and store MachineMemOperands.
This also removes a latent typo: the final buildCopies call passed
LMMOffset for the store offset argument instead of SMMOffset. Since the
two were always equal this was harmless, and the unified Offset makes
the divergence unrepresentable.
Found via @jlebar's X86 LLVM bug hunt / FuzzX effort:
https://github.com/SemiAnalysisAI/FuzzX/blob/master/x86/bugs/042-sfb-buildcopies-wrong-mmo-offset/NOTES.md
cc @jlebar
[lldb][test] Speed up ProcessAttach test (#201530)
ProcessAttach is our slowest test and runs for about 70s. We spend 60s
in the autocontinue test waiting for the target program to terminate.
The reason we wait for the program is that our autocontinue test is not
running its command in async mode, and we wait after the attach for the
next breakpoint or the program terminates.
This patch makes the attach and autocontinue run in async mode so we
don't wait for the program to finish. This reduces the test time from
70s to about 10s.
It also replaces the assertTrue call that was supposed to be an
assertEqual, which made the test succeed even though the inferior
process already terminated.
[AArch64][GlobalISel] Select narrow G_INSERT_VECTOR_ELT GPR operands (#203568)
RegBankSelect currently extends narrow i8/i16 G_INSERT_VECTOR_ELT GPR
operands to 32-bits. Move this widening to pre-isel lowering. This will
help enable a simple fast pure type-based RBS alternative.
Assisted-by: codex
databases/cassandra[45]: add run_depends on java
These ports need to have a specific JDK installed to run.
In cassandra3 this was already correctly configured.
NB: Cassandra 4 is out of beta for a long time.
PR: 296095
Approved-by: Angelo Polo <language.devel@>
[libomp] Add kmp_vector (ADT 2/2) (#176163)
See rationale in the commit adding kmp_str_ref.
This commit introduces kmp_vector, a class intended primarily for small
vectors. It currently only includes methods I need at the moment, but
it's easily extensible.