Exclude more libc math C++ builtins from compiler-rt Bazel overlay (#214779)
Building on work in https://github.com/llvm/llvm-project/pull/208861,
adds recently-added additional libc math C++ builtins from the
compiler-rt Bazel overlay.
[flang][OpenMP] Support the FULL clause on the UNROLL construct (#214115)
`!$omp unroll full` is parsed and then aborts in lowering with
`not yet implemented: Unhandled clause FULL in UNROLL construct`. This
implements it. Fixes #214114.
`partial` landed in #206642 and bare `unroll` in #144785, so `full` is
the remaining clause on the
construct. clang already supports `#pragma omp unroll full`, and
`OpenMPIRBuilder::unrollLoopFull` already exists, so the work is the
MLIR op, its translation, and
the flang lowering.
### MLIR
Adds `omp.unroll_full`, mirroring `omp.unroll_heuristic`: one applyee,
no generatee, since no loop
remains after full unrolling. The name is the one already used as an
example in `CanonicalLoopOp`'s
[66 lines not shown]
[MIR] Quote basic block names that are not plain identifiers (#214054)
`MachineBasicBlock::printName` writes the IR basic-block name after
`bb.<N>.` unquoted, and the
MIR lexer reads it back with `isIdentifierChar` only. If the name
contains anything else -- a
comma, say -- the name is cut short on the way in and the remainder is
treated as syntax, so `llc`
cannot parse the MIR that `llc` just wrote:
```console
$ llc -mcpu=gfx90a -stop-before=greedy bb-comma-name.ll -o out.mir
$ llc -mcpu=gfx90a -x mir -start-before=greedy out.mir -o /dev/null
error: out.mir:170:8: expected ':'
```
because the printer emitted
```
[46 lines not shown]
[AssumptionCache] Remove incorrect assertion from `removeAffectedValues()` (#214524)
The assertion in `removeAffectedValues()` is trying to enforce that,
when we come to remove the affected values of a live assume call, each
affected value has a corresponding line in the cache. This may not be
the case if the assume call has been modified via a call to
`Use::set()`, as our value handles are only notified on deletion and
RAUW. We're not worried about this, though, as the cache is
conservative.
Remove this assertion and add a comment explaining why we may fail to
find.
[libc++] Collapse `optional<T&>` inheritance hierarchy (#215286)
Resolves #215185
- Since `optional<T>` and `optional<T&>` are decoupled, there wasn't
much reason to have a base class for `optional<T&>`, so we can simplify
it by inlining all of the base members and private functions into it
directly.
- This leaves us with the iterator base which now only exposes the
`iterator` type, since we can also directly inline `begin()` and
`end()`.
---------
Co-authored-by: Nikolas Klauser <nikolasklauser at berlin.de>
[Clang] Include libc wrappers for LLVM environment CUDA / HIP (#208084)
Summary:
These wrappers (although they are empty right now) are used to inform
the offloading runtime of the supported libc / libm functions available
on the device. We do not include these for the standard HIP path because
they conflict with the alreaedy present utilities, but with the
LLVM-only route we should be able to use them.
[modulemap] Exclude the z/OS string.h wrapper from LLVM_Utils (#215800)
8fce476c8122 (https://github.com/llvm/llvm-project/pull/167703) replaced
`llvm/Support/SystemZ/zOSSupport.h` with
`llvm/Support/SystemZ/zos_wrappers/string.h`, a wrapper that pulls in
the system header via `#include_next` and then redeclares `strsignal`
and `strnlen` with `asm` labels. It is only meant to be reachable on
z/OS, and `llvm/CMakeLists.txt` adds the directory to the include path
solely when `CMAKE_SYSTEM_NAME` matches OS390.
The header was never excluded from the module map, though.
`LLVM_Utils.Support` is an umbrella over `llvm/Support`, so building
that module textually includes the wrapper on every host. This surfaced
building the Swift compiler on Windows, where `<string.h>` resolves to
the UCRT header that already declares `strnlen` as `_ACRTIMP`, i.e.
`__declspec(dllimport)`:
```
error: cannot apply asm label to function after its first use
[11 lines not shown]
[MLIR][ROCm] Export runtime wrappers on Windows (#213046)
Export the ROCm runtime wrapper entry points when building
`mlir_rocm_runtime` as a Windows DLL.
Use `__attribute__((visibility("default")))` on other platforms.
## Motivation
`extern "C"` prevents C++ name mangling, but it does not add symbols to
a
Windows DLL export table. Consequently, `mlir-runner` can load
`mlir_rocm_runtime.dll`, but ORC cannot resolve its `mgpu*` entry
points.
CUDA, SYCL, Vulkan, and SPIR-V runtime wrappers already use explicit
Windows
export annotations. This applies the same approach to the ROCm runtime.
[24 lines not shown]
video: add V4L2 compat symbols for ffmpeg/opencv
Adds v4l2_std_id, struct v4l2_standard/v4l2_plane, VIDIOC_G_STD/S_STD/
ENUMSTD, V4L2_STD_NTSC*, the MPLANE capability flag, multiplanar types
(VIDEO_MAX_PLANES, v4l2_plane_pix_format, v4l2_pix_format_mplane,
V4L2_TYPE_IS_MULTIPLANAR), V4L2_PIX_FMT_JPEG/YUV411P/SN9C10X, and the
MPEG control class (V4L2_CID_MPEG_BASE, V4L2_CID_MPEG_VIDEO_B_FRAMES).
video(4) capture devices are digital-only and never expose these, but
ffmpeg's libavdevice/v4l2.c and opencv's cap_v4l.cpp both reference
them unconditionally. Fixes their build against sys/videoio.h.
PR: 297454
Reviewed by: manu, adrian
Differential Revision: https://reviews.freebsd.org/D58793
video: fix v4l2_buffer size assert on non-i386 32-bit ports
Split the #else branch into an explicit __i386__ case (68) and a
generic ILP32-with-64-bit-time_t case (80) covering arm and powerpc.
Fixes: 0343ab8a6afa
Reviewed by: adrian
Differential Revision: https://reviews.freebsd.org/D58790
Revert "[HLSL] Generate semantic signature metadata" (#215844)
Reverts llvm/llvm-project#212892
Build dependency for `DXILResource.h` was not updated. I will reland
with the corrected dependency.
[libc++] Guard container benchmarks on library availability (#215408)
Instead of using TEST_STD_VER, use FTMs or requires clauses to enable
benchmarks for some recent features like `append_range`. This is needed
since older versions of the library don't provide these features, so the
container benchmarks as a whole would fail to compile instead of just a
few methods being disabled.
cross/ia16-elf-libi86: import ia16-elf-libi86-0.0.521a43f42a3daf00b85b62c44390821f532def8f
Basic library for IA16 (for example, 8086 and 80286) MS-DOS cross environment.