truss - Handle xsyscall syscalls better, and fix argument printing on x86_64.
* Some further work is needed to make sure arguments are printed correctly
for xsyscall syscalls, and to update and improve the output.
* xsyscall syscalls are currently always signaled to the PIOCWAIT ioctl with
nargs=0, because the syscall2() handler only looks up the argument count
for the xsyscall SYSCALL (i.e. syscall(2) or __syscall(2)), which takes a
variable argument count. So for now, we can just let truss figure out the
argument count itself.
* Argument printing code was broken on x86_64, due to wrong malloc buffer
sizing (it only didn't segfault out of luck). Update to explicitly
distinguish between 32bit and 64bit arguments.
* Small first update on the syscall argument table maintained in truss.
* Get rid of the Quad argument type printing, which is obsolete on 64bit
systems.
Fixed build with C++20 standard (#169772)
Building LLVM with CMAKE_CXX_STANDARD set to 20 fails since the iterator
facade is not fully compatible with C++20. To make it compatible,
specific operator overloads have to be constrained.
Overload for operator- in ADT iterator is now constrained with concept
BaseT::IsRandomAccess.
Patch by Jonathan Wakely.
Fixes #139072.
---------
Co-authored-by: A. Jiang <de34 at live.cn>
Co-authored-by: Jakub Kuderski <kubakuderski at gmail.com>
[APINotes] Avoid duplicate attributes when fields instantiate class templates (#173386)
If a C++ class template `A` is annotated via API Notes and another class
`B` has a field of type `A`, we would apply the attributes from the API
Notes twice. This happened during `ActOnFields`, so this change makes
sure we stop processing API Notes for class template instantiations in
this function.
rdar://166179307
[NFC] Constify IdentifierInfo (#173266)
This change updates several APIs and local uses to take pointers to
const IdentifierInfo where mutation is not required.
AMDGPU: Stop requiring afn for f32 rsq formation (#172082)
We were checking for afn or !fpmath attached to the sqrt. We
are not trying to replace a correctly rounded rsqrt; we're replacing
the two correctly rounded operations with the contracted operation.
It's net a better precision, so contract on both instructions should
be sufficient. Both the contracted and uncontracted sequences pass
the OpenCL conformance test, with a lower maximum error contracted.
t_fpclassify: Fix build properly without __HAVE_LONG_DOUBLE.
Centralize use of union ieee_ext_u, used on machines where double is
not the same as long double, so most of the long double code doesn't
need __HAVE_LONG_DOUBLE conditionals (reminder: __HAVE_LONG_DOUBLE
means long double is _larger_ than double, not just that long double
exists; long double always exists and should work either way).
PR standards/59336: C23: Annex F and math.h extensions
PR lib/59853: compiler-rt softfloat lacks floating-point exceptions
t_fpclassify: Revert previous -- __HAVE_LONG_DOUBLE is used wrongly.
__HAVE_LONG_DOUBLE being defined means long double is _different_
from double (typically 80-bit or 128-bit extended precision), and not
being defined means long double is the same as double.
Any code that uses ordinary long double arithmetic or long double
libm functions should work with or __HAVE_LONG_DOUBLE.
But without __HAVE_LONG_DOUBLE, we don't have things like union
ieee_ext_u for breaking apart the internal representation.
Will re-fix the build in a subsequent change coming up momentarily.
NAS-139000 / 25.10.2 / Make sure lxcfs is not enabled automatically (#17902)
## Problem
The **`lxcfs`** service currently runs independently, even when **Incus
is not running**.
However, Incus expects `lxcfs` to be active **only when Incus itself is
set up and running**.
Keeping `lxcfs` running outside of Incus’s lifecycle leads to
unnecessary background services and inconsistent service management.
## Solution
Disable the standalone `lxcfs` service and tie its lifecycle directly to
Incus:
* Stop `lxcfs` automatically when Incus is stopped
* Allow `lxcfs` to start automatically **only as a dependency of
Incus**, since Incus explicitly requires it
[2 lines not shown]
[libc++] Applied `[[nodiscard]]` to more Language Support classes (#171078)
[[nodiscard]] should be applied to functions where discarding the return
value is most likely a correctness issue.
- https://libcxx.llvm.org/CodingGuidelines.html
- https://wg21.link/support
Towards #172124
Implemented in this release:
- [x] `type_info`
- [x] `type_index`
- [x] `bad_alloc`, `bad_array_new_length`
[libc++][regex] Applied `[[nodiscard]]` (#170974)
`[[nodiscard]]` should be applied to functions where discarding the
return value is most likely a correctness issue.
- https://libcxx.llvm.org/CodingGuidelines.html
- https//wg21.link/re
math/calc: Stop conflicting with itself
My initial hope was that pkg would identify and skip tautologies, and
the tests I ran seemed to work at the time, but it doesn't work in
practice. Instead, teach calc not to conflict with calc, and calc-tiny
not to conflict with calc-tiny.
[MLIR][Linalg] Use Top-Down traversal to safely optimize multi-use producer fusion (#172216)
Switches the greedy rewrite traversal for the multi-use producer fusion
pattern to Top-Down (Pre-Order).
The previous Bottom-Up (Post-Order) traversal led to a critical SSA
violation when a producer (P) had multiple users (I and C) and the first
user (I) appeared before the current consumer (C) in the block.
Processing the outer consumer (C) first and attempting to fuse P into C
would create a new fused operation, F. The rewrite would attempt to
replace P's result (used by I) with the output of F. However, since I is
located before F in the block, this replacement breaks SSA dominance
rules, leading to a crash. To ensure correctness, the first use (I) must
be processed and fused before the second use (C). Using Top-Down
traversal ensures that operations are visited and rewritten in the
correct flow order.
Take a look at this example, which represents a three-operation chain
where the first operation, P (**%13:2**), has two users: an intermediate
[42 lines not shown]