system: replace cron restart in legacy pages #9352
This probably slows down execution, but either we solve this later
on or just live with it as these pages are going away eventually.
[libc] Convert readv, writev, and read_write tests to use pipes (#210725)
Using a pipe avoids races between "hermetic" and "unit" versions of the
same test and avoids leaving filesystem artifacts around if the test
fails. If I'm successful, we won't have the worry about the first
problem anymore, but I think it's still a nice cleanup.
Assisted by Gemini.
[ValueTracking] Fix signed zero handling in minnum/maxnum matching (#210077)
The SPF float min/max matching skipped the check that either the select
is nsz or one of the ops non-zero in the case where the zero used in the
fcmp and select is the same one. This does not make any sense, because
which zero is used in the fcmp is just completely irrelevant.
This leads to miscompiles where the SPF pattern is lowered to hardware
minnum/maxnum operations. These have ordered zero, rather than picking
whichever zero is specified in the select. It can still be accidentally
correct if the zero happens to be the right one for min/max.
I believe the current assumption is that SPF only matches in cases where
signed zero behavior does not matter. An alternative way to fix this
would be to match the specific zero that's required to match ordered
zero semantics. Though I'd rather we match that in DAGCombine, not the
SPF based SDAGBuilder code.
Fixes https://github.com/llvm/llvm-project/issues/93414.
[LangRef] Clarify interaction of noalias and synchronization (#211507)
Noalias applies to accesses on other threads, but this was not very
clear in existing wording, because "during the execution of the
function" is somewhat ambiguous.
Explicitly mention that it applies to accesses from other threads. This
means that conflicting accesses (i.e. not read-read) need to either
happen-before function entry, or function exit needs to happen-before
them, otherwise behavior is undefined. For accesses not based on the
noalias pointer, this requires synchronization *outside* the function.
[PseudoProbe] Avoid inserting probes between musttail/deoptimize calls and returns (#211226)
PseudoProbe insertion can generate invalid IR by inserting a probe
between a musttail/llvm.experimental.deoptimize call and its following
ret. Insert the probe before these calls to preserve the required
instruction ordering.
www: avoid filter_configure() to make backend call less obscure #9352
We need to switch all other configuration to the backend as well so
it makes sense to deprecate filter_configure() and later match all
the other configuration functions using similar backend calls.
[flang-rt] enable IsNamelistNameOrSlash lookahead for scalar namelist items
Problem
-------
An empty NAMELIST assignment on a scalar item — e.g. `l =` in
&nml l= i_count=7 r_value=2.72/
— aborted at runtime with
fatal Fortran runtime error: Bad character 'i' in LOGICAL input field
Every EditIntegerInput / EditRealInput / EditLogicalInput /
EditCharacterInput function starts its list-directed arm with
if (IsNamelistNameOrSlash(io)) return false; // no value
which peeks ahead (via SavedPosition, no stream consumption) for a
`<name>=` / `<name>%` / `<name>(` shape or one of the terminators
[21 lines not shown]
[X86] Remove lowerToAddSubOrFMAddSub vectorization lowering code (#211666)
Similar to #207406 - the middleend (SLP/VectorCombine/InstCombine)
should no longer generate any mixed "addsub" scalar buildvector patterns
for the backend.
We can remove the lowerToAddSubOrFMAddSub build vector code path and
rely on the combineShuffleToAddSubOrFMAddSub path.
The vector code created by SLP/VectorCombine isn't yet perfect (and I'm
still working on improving it), but lowerToAddSubOrFMAddSub is unrelated
and of no more use to us.
The CodeGen buildvector tests can be removed - equivalent test coverage
is present in Transforms/PhaseOrdering/X86 that generate shuffle
patterns that we test for in fmaddsub-combine.ll, fmsubadd-combine.ll
and sse3-avx-addsub.ll (and sse3-avx-addsub-2.ll can be deleted).
Fixes #144489
[libc] Make getauxval test hermetic (#210706)
To make this work, I needed to remove the getauxval definition from
HermeticTestUtils.cpp. Even though it was weak, it still prevented the
real one from being used because the linker will not extract an archive
member if the dependency has already been satisfied by a weak
definition.
I *think* I've removed the need for it by changing how the getauxval
dependency is declared in cmake (it fixes the errors on the presubmit
aarch64 bot), but I don't know if that was the only issue.