[FixIrreducible][UnifyLoopExits] Fix callbr multiedge splitting (#207598)
This fixes a bug where splitting `callbr` multiedges corrupts the
successor's PHI nodes.
Originally, the first split edge would replace all incoming edges from
the `callbr` block with the newly introduced target block by using
`replacePhiUsesWith`. Later edges would create new target blocks and
would try to update their edge's PHI as well, but would not find it,
leading to a corrupted PHI node.
To fix this, it is theoretically only necessary to ensure that exactly
one PHI argument is replaced per split edge. However, as all the PHI
nodes must have the same argument for every edge from one predecessor, a
single target block suffices, through which all traffic can be routed,
which will be especially useful for switches, where multiedges are
common.
[Trunk crashing](https://godbolt.org/z/4MM5eMrW5)
Found while working on PR #206567, cc @ro-i.
[LLDB][FreeBSD] Fill pgid and sid in ProcessInfo
These two fields are required by HostTest.cpp. Although I don't see any
usecase, we add these two fields to prevent failure.
[orc-rt] Add printf logging backend (#209006)
Implement the printf backend, selected at configure-time with
ORC_RT_LOG_BACKEND=printf. Messages are written to stderr, or to the
file named by the ORC_RT_LOG_OUTPUT environment variable.
The ORC_RT_LOG environment variable sets the runtime level floor (error,
warning, info, debug, or off) -- only messages at or above it are shown.
When unset it defaults to warning, so warnings and errors are shown and
info and debug are opt-in. The runtime floor cannot go below the
compile-time ORC_RT_LOG_LEVEL floor (the lowest level built in).
Also add regression tests, driven by a new orc-rt-log-check tool that
reports the compiled-in backend and levels (which lit exposes as
features) and emits a message at each level.
[RISCV][P-ext] Improve the codegen for unzip-like shuffle and buildvector (#208763)
This patch selects `pncvt*`/`unzip*` for unzip-like patterns.
On RV32, we select packed narrow shift for i8x4 and i16x2 BUILD_VECTOR
that are equivalent to deinterleave shuffle.
On RV64, we select packed unzip for i8x4 and i16x2 deinterleave shuffle.
Apart from the packed unzip intrinsics, this patch also adds support for
the codegen of two-source unzip.
[analyzer] Model strchr/strrchr/memchr/strstr/strpbrk/strchrnul (#207267)
CStringChecker did not model these buffer-search functions, so the
engine bound each call to a fresh conjured symbol unrelated to the source.
As a consequence, we could not track the origin of the returned pointer,
thus the fact that it shares provenance of the source pointer.
Fixes #203260
Assisted-by: Claude Opus 4.8
firewall: invalidate rule stats cache for legacy rules page
Since 5baba39831dff added the TTL but the page should fetch per
inspect push this restores the old behaviour. We could move the
controller to the legacy plugin so that it is not forgotten on
final removal but that's not for now.
Enable radeonfb and veritefb by default on EFIKA.
The board can now boot to multi-user with wscons on graphics card.
While here, disable audio, since codec detection is flaky and tends to
cause problems.
Several fixes that help with bringup of non-POSTed Radeon cards.
- Stop preserving sync-disable bits in CRTC_EXT_CNTL
- Unblank path also clears HSYNC_DIS/VSYNC_DIS (for CRTC0)
- Reordered the TMDS transmitter enable after BIOS init
- Skip the FP_SEL_CRTC2 "iBook/XVR-100" restore hack when a BIOS was found
- Program TMDS_PLL_CNTL for internal-TMDS ports
- Skip phantom ports when building the CRTC list (for single-port RV100)
- Pixel clock ungating where appropriate
Tested on RV100 and RV280 with RADEONFB_BIOS_INIT.
Ok macallan@.
lang/gcc16: Fix build on arm64
GCC upstream has removed conditional definitions for some constants,
defining them directly with the same values used on Linux. However,
FreeBSD values for the same constants are different. Then revert
upstream commit.
Co-authored-by: Mark Millard <marklmi26-fbsd at yahoo.com>
PR: 294062
Reported by: Luke Yasuda <jing at jing.rocks>