[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.
[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.
Firewall: Rules and NAT: Group invalid rules to the end of the ruleset. These rules are skipped by PF processing because they do not have a valid interface.
ena: Put taskqueues into correct domain if !RSS
When compiled without 'options RSS', the ena driver created taskqueues
using taskqueue_start_threads_cpuset passing a mask value of NULL,
both in the ena_setup_tx_resources path (for enqueues) and in the
ena_create_io_queues path (for the completion-processing).
In the default configuration, on most EC2 instances, this results in
taskqueues running in the right NUMA domain, but only by accident; in
non-default configurations (e.g. with with multiple EBS volumes
attached and associated NVMe taskqueues) the taskqueues may land in
the wrong NUMA domain even on instance types where the one-EBS-one-ENA
case produces the desired results.
Set (struct ena_que)->domain and use that to inform the choice of CPU
sets. On a c8gn.48xlarge EC2 instance this doubles throughput on a
32-TCP-stream benchmark.
Reviewed by: akiyano
[5 lines not shown]
[BOLT][DebugInfo] Add DWARF64 support for BOLT (#206437)
BOLT currently assumes the DWARF32 format when it rewrites debug
sections. As a result, rewriting a binary that was compiled with
`-gdwarf64` either produces a corrupted output or fails `llvm-dwarfdump
--verify`. This patch adds DWARF64 support to the BOLT DWARF rewriter,
honoring each unit's DwarfFormat and emitting correct encodings DWARF64
for binaries, including mix DWARF32 and DWARF64.
[UniformityAnalysis] Make BlockLabels transient and switch to SmallVector. NFC (#211734)
Drop the field from the descriptor and keep the labels in a
propagator-local SmallVector indexed by block number.