eb: Improve portability of iconv handling.
Older NetBSD and SunOS have the traditional iconv prototype with a const
char * argument, while other operating systems are using a char *
argument due to historical accidents in the POSIX standard.
Newer C compiler versions (e.g. GCC 14) have strict enforcement of
pointer type compatibility. Thus a const char * cannot be converted
easily back into a non-const char *. So we need to match the prototype
of the iconv function carefully.
clang: enable `swiftasynccall` for Wasm (#203330)
Follow-up to https://github.com/llvm/llvm-project/pull/188296, where in
LLVM `swiftasynccall` is lowered to Wasm `return_call` and
`return_call_indirect` instructions when tail calls are enabled. This
still needed to be enabled at the Clang level in
`checkCallingConvention` in `lib/Basic/Targets/WebAssembly.h`.
libcrack: Fix various build problems with GCC 14 and GCC 15.
Unfortunately, libcrack relied on quite a lot of implicit
declarations of internal functions.
It makes use of syntax that predates standardized C, so force
an older standard version as insurance against future C compilers
getting stricter.
java/openjdk8: fix build on aarch64/16
>>> Compiling /wrkdirs/usr/ports/java/openjdk8/work/jdk8u-jdk8u482-b08.1/hotspot/src/os/bsd/vm/os_perf_bsd.cpp
>>> In file included from /wrkdirs/usr/ports/java/openjdk8/work/jdk8u-jdk8u482-b08.1/hotspot/src/os/bsd/vm/os_perf_bsd.cpp:67:
>>> In file included from /usr/include/sys/user.h:52:
>>> In file included from /usr/include/vm/pmap.h:88:
>>> In file included from /usr/include/machine/pmap.h:46:
>>> In file included from /usr/include/sys/systm.h:46:
>>> /usr/include/machine/cpufunc.h:35:1: error: static declaration of 'breakpoint' follows non-static declaration
>>> 35 | breakpoint(void)
>>> | ^
>>> /wrkdirs/usr/ports/java/openjdk8/work/jdk8u-jdk8u482-b08.1/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp:224:17: note: previous declaration is here
>>> 224 | extern "C" void breakpoint();
>>> | ^
>>> 1 error generated.
I don't know why this does not happen on other architectures or freebsd versions.
- changed post-patch to pre-configure, this makes it a lot easier to use "make makepatch".
[2 lines not shown]
Revert "[AMDGPU] Capping max number of registers to function's occupancy budget for indirect calls" (#204605)
Reverts llvm/llvm-project#199765
Broke https://lab.llvm.org/buildbot/#/builders/10
lang/ghc: fix runtime on powerpc64
While the compiler binary itself built fine, it creates ELFv1 binaries
on powerpc64, because default.target is regenerated later during
the build process. Drop the current workaround and just patch
the autoconf's m4 file instead.
lang/swipl: fix build on !amd64
Including poll.h is guarded behind HAVE_POLL_H, but then it also starts
using poll() and struct pollfd, which fails:
/wrkdirs/usr/ports/lang/swipl/work/swipl-9.2.9/src/os/pl-file.c:2604:25: error: array has incomplete element type 'struct pollfd'
2604 | struct pollfd poll_buf[FASTMAP_SIZE];
| ^
/wrkdirs/usr/ports/lang/swipl/work/swipl-9.2.9/src/os/pl-file.c:2604:10: note: forward declaration of 'struct pollfd'
2604 | struct pollfd poll_buf[FASTMAP_SIZE];
| ^
/wrkdirs/usr/ports/lang/swipl/work/swipl-9.2.9/src/os/pl-file.c:2642:45: error: invalid application of 'sizeof' to an incomplete type 'struct pollfd'
2642 | else if ( !(poll_map = malloc(count*sizeof(*poll_map))) )
| ^~~~~~~~~~~
/wrkdirs/usr/ports/lang/swipl/work/swipl-9.2.9/src/os/pl-file.c:2604:10: note: forward declaration of 'struct pollfd'
2604 | struct pollfd poll_buf[FASTMAP_SIZE];
| ^
/wrkdirs/usr/ports/lang/swipl/work/swipl-9.2.9/src/os/pl-file.c:2644:35: error: invalid application of 'sizeof' to an incomplete type 'struct pollfd'
2644 | memset(poll_map, 0, count*sizeof(*poll_map));
| ^~~~~~~~~~~
[LifetimeSafety] Propagate loans through the GNU binary conditional (#204439)
FactsGenerator only handled the ternary, so a borrow used through the
GNU binary conditional `a ?: b` was silently dropped. Handle both via
VisitAbstractConditionalOperator, flowing from
getTrueExpr()/getFalseExpr(). For `a ?: b` getTrueExpr() is an
OpaqueValueExpr, so make OpaqueValueExpr transparent in the origin
manager and peel it in the arm-reachability check; guard against flowing
a void (e.g. throw) arm.
Assisted-by: Claude Opus 4.8
Co-authored-by: Gabor Horvath <gaborh at apple.com>
[libc++][mdspan][test] Correct `mapping::operator()` constraint tests (#201061)
The previous requires-expression only checked that `std::is_same_v<...>`
was a well-formed expression, so the test would pass even when the
result was false.
[mlir][VectorToLLVM] add opt-in `enable-gep-inbounds-nuw` pass flag for `vector.load/store` (#202118)
> This patch follows up on #201180 and the refactoring #202766 (which
made `affine-super-vectorize` emit `in_bounds = [true]` on
`vector.transfer_read`/`write` when accesses are statically provable to
be within bounds). With that in place, the `VectorToLLVM` lowering was
still emitting `llvm.getelementptr` without `inbounds`/`nuw`, so LLVM
could not exploit the no-wrap guarantee: SCEV could not prove the index
arithmetic monotone (loop vectorizer bailed out) and BasicAliasAnalysis
fell back to conservative aliasing.
Without `inbounds`/`nuw` on the GEP that `vector.load`/`vector.store`
lower to, LLVM cannot exploit no-wrap guarantees: SCEV fails to prove
loop-index monotonicity (loop vectorizer bails), and BasicAliasAnalysis
falls back to conservative aliasing.
### Why opt-in
Unlike `memref.load`, `vector.load`/`vector.store` intentionally allow
[37 lines not shown]