[GlobalISel][KnownBits] Port SREM to GlobalISel (#198956)
This PR also move case statement for or `G_UREM `that is being
introduced by https://github.com/llvm/llvm-project/pull/193455 So that
`G_[U|S][DIV|REM] ` being grouped together, just like in
`SelectionDAG.cpp`
Related: https://github.com/llvm/llvm-project/issues/150515
---------
Signed-off-by: ZakyHermawan <zaky.hermawan9615 at gmail.com>
[lldb] Add missing includes. (#198996)
Failed to build in CI because,
ScriptedPythonInterface::CreatePlugingObject is a template function and
the arguments are of incomplete types gotten from `lldb-forward.h`
(typedef of lldb_private::XXXX = XXXXSP).
Introduced in commit 1b4a578a9f7760a00bf26525a603be1ec6e7d862
[AMDGPU] Coverity fixes - check ret val and init class members (#198570)
Coverity fixes:
* calling getIntrinsicSignature without checking return value (as is
done elsewhere 4 out of 5 times) in
llvm/lib/Target/AMDGPU/AMDGPUInstCombineIntrinsic.cpp
* non-static class member MaxSGPRs, MaxVGPRs and MaxUnifiedVGPRs is not
initialized in this constructor nor in any functions that it calls in
llvm/lib/Target/AMDGPU/GCNRegPressure.h
ipfw: fix checksum after NAT
When checksum offloading is used, IPFW needs to fix the checksum
after libalias has done NAT. The ipfw_nat() function does so, but
only for mbufs without a receiving interface. However, if, for example,
the packet was sent inside a jail that used checksum offloading over
an epair, ipfw still needs to fix the checksum even though the mbuf
has set a receiving interface (epair).
This patch just removes the check whether a receiving interface is set.
PR: 295057
Reviewed by: tuexen
Differential Revision: https://reviews.freebsd.org/D57091
(cherry picked from commit 81b47a7c604f1d563283759572fa7a1f9d4dc56f)
[clang] Complete fields in __builtin_offsetof designators (#195126)
Code completion was a no-op inside `__builtin_offsetof`: a cursor at `
__builtin_offsetof(T, ^)` or `__builtin_offsetof(T, a.^)` fell through
to ordinary-name completion instead of suggesting fields. Route the
code_completion token to a new SemaCodeCompletion entry point that walks
the designator path so far, resolves the subobject's type, and
enumerates its members. Methods are filtered out, inherited fields are
included, indirect fields from anonymous unions and structs are peeled,
and `using Base::field` resolves through its UsingShadowDecl. A
code_completion token past a complete component (right after `]` or at
the end of the chain) is dropped rather than offering fields the user
can't paste without first typing `.`.
The offsetof and designated-initializer type walkers are folded into one
helper parameterized by a field-lookup callback, which incidentally
fixes reference-field and indirect-field traversal in
designated-initializer completion too.
[9 lines not shown]
ipfw: fix checksum after NAT
When checksum offloading is used, IPFW needs to fix the checksum
after libalias has done NAT. The ipfw_nat() function does so, but
only for mbufs without a receiving interface. However, if, for example,
the packet was sent inside a jail that used checksum offloading over
an epair, ipfw still needs to fix the checksum even though the mbuf
has set a receiving interface (epair).
This patch just removes the check whether a receiving interface is set.
PR: 295057
Reviewed by: tuexen
MFC after: immediately
Differential Revision: https://reviews.freebsd.org/D57091
[BOLT][DebugInfo] Speed up DIEBuilder with DenseMap (#197655)
We replaced `std::unordered_map` with LLVM's `DenseMap` for the DIE maps
in DIEBuilder. Since this map is accessed frequently during DWARF
rewriting, the improved data layout translates directly into reduced
cache misses. As shown in the benchmark results, this change yields
1.22x–1.27x speedup.
**Program from Bytedance**
| BatchSize | Baseline (s) | Optimized (s) | Speedup |
|---|---|---|---|
| 2 | 120.01 | 98.32 | 1.22x |
| 4 | 104.12 | 85.37 | 1.22x |
| 16 | 82.31 | 66.41 | 1.24x |
| 32 | 77.45 | 61.01 | 1.27x |
| 64 | 71.69 | 56.35 | 1.27x |
[LoopInterchange] Bail out when memory instruction ratio is high (#192954)
Currently, to save compile-time, LoopInterchange limits the number of
memory instructions and bails out early if it exceeds a threshold.
However, the dependence analysis phase in LoopInterchange has `O(N^2)`
complexity, where `N` is the number of memory instructions. This means
that even a small number of memory instructions can have a
non‑negligible impact on compile-time. In fact, I found such a case
(about +5% compile‑time regression), which the most instructions in the
loop are stores.
This patch replaces the heuristic which determines whether we should
continue the analysis or bail out to save compile time. The idea is that
if the ratio of the squared number of memory instructions to the total
number of instructions is small, LoopInterchange is allowed to continue
its analysis. The existing option `-loop-interchange-max-meminstr-count`
is removed.
Compile-time improvement:
https://llvm-compile-time-tracker.com/compare.php?from=f344adcd2fb876d61f016fb92369a6530cc85a5b&to=6f7e5b0e4b35116728563913f2d98b7f9341409b&stat=instructions:u
www/freenginx: update njs 0.9.8 -> 0.9.9
Bump PKGREVISION.
Sponsored by: tipi.work
<ChangeLog>
nginx modules:
*) Security: a heap buffer overflow might occur in a worker process
when the "js_fetch_proxy" directive value contains nginx
variables derived from the client request ($http_*, $arg_*,
$cookie_*, etc.) and the location's JS handler invokes
ngx.fetch(). The issue was introduced in dea83189 (0.9.4).
*) Feature: added js_access directive.
*) Feature: added r.readRequestText(), r.readRequestArrayBuffer(),
[21 lines not shown]