[analyzer][z3] Fix SMTConstraintManager.h removeDeadBindings (#215240)
removeDeadBindings did not properly keep track of constraint
dependencies, causing still-in-use constraints to be incorrectly
removed.
This PR stops constraints that are indirectly related to a live symbol
from being removed by removeDeadBindings.
Assisted-by: Codex
[PAC][ELF] Make non-preemptible IFUNC GOT assertion an error and extend (#214456)
Support for R_AARCH64_AUTH_IRELATIVE is not yet present in LLD, but we
accept various input that would give rise to needing it. For the direct
reloc case, replaceWithDefined asserts (rather than give an error
message) this was not requested, whilst for the non-direct reloc case it
silently ignores which GOT type was requested. In the latter case, and
the former when assertions are disabled, this results in mis-linking the
object, producing one with a non-AUTH GOT entry, that would presumably
then fail the AUTDA operation in any user of it (aside from the IPLT
entry generated by LLD).
Fixes: 417d2d7ce694 ("[PAC][lld][AArch64][ELF] Support signed GOT
(#113815)")
[CodeGen] Replace CodeGenPassBuilder CRTP with virtual hooks (#216468)
Make the hooks that were dispatched through derived() virtual, drop both
template parameters, and outline the pipeline into
lib/Passes/CodeGenPassBuilder.cpp, mirroring TargetPassConfig. The pass
headers move out of CodeGenPassBuilder.h.
The outlined bodies are moved verbatim, apart from dropping
now-redundant
std::move on returned Errors.
MSP430CodeGenPassBuilder.cpp.o .text: 84685 -> 11240 (-87%); compile
time: 1.75s -> 0.64s. llc .text: -293824 bytes; .data.rel.ro: +2784 (the
9 new vtables). The vtable slots are link-time constants in the default
non-PIE llc; with -pie they become 333 relative relocations, which RELR
packs into 40 bytes.
Overriding is now compiler-checked, which surfaced
AMDGPUCodeGenPassBuilder::addPreEmitRegAlloc (not a hook, never defined
[6 lines not shown]
[Clang][RISC-V] Warn on duplicate interrupt attribute types (#217358)
The RISC-V interrupt attribute previously accepted the same type more
than once. This commit emits a warning instead (since a duplicate is
almost certainly a mistake).
The warning is emitted at most once per attribute and is controlled by
the new `-Wduplicate-interrupt-type` flag.
Follow up of #216159
[Mips] Legalize vector UNDEF instead of expanding to zero BUILD_VECTOR (#211503)
Currently, MIPS MSA expands ISD::UNDEF into a BUILD_VECTOR of all zeros
during legalization. This creates an infinite loop in DAGCombiner when
the following occurs:
1.Mips lower BUILD_VECTOR expands non-splat vectors into
INSERT_VECTOR_ELT with creating undef node
2.Then legalization expands UNDEF back to BUILD_VECTOR zero
3.Mips lower BUILD_VECTOR converts zero vector to BITCAST
4.DAGCombiner optimizes BITCAST(zero) to UNDEF
5.Back to step 2, infinite loop
Fix #210229.
[Mips] Fix getInstSizeInBytes for instructions with delay slots (#216665)
MIPS branch/jump instructions (B, BEQ, JALR64Pseudo, PseudoReturn64,
etc.) have a delay slot. The actual encoded size is 8 bytes (instr +
NOP). This fixes "out of range PC16 fixup" errors on large functions.
This issue was exposed in llvm 23 by commit pr #191460 which changed
MipsBranchExpansion to use MBB::iterator instead of instr_iterator,
making the MBB size calculation more accurate and revealing the
pre-existing bug.
Thanks for the pr #187703 `AllowOverEstimate` to help find instr which
actual size mismatch expected size .
Fix #112010.
[BOLT] Fix overflow issue when using absolute addressing in LSDA (#216654)
Currently, in the emitLSDA() flow, signed data is used when using
absolute addresses to update the LSDA for non PIE/DSO. But when the PC
is higher than 0x7fffffff(2GB), this will be sign-extended into an
invalid 64-bit address. Especially when the output binary is large,
silent errors can easily occur (we have met this problem in real
scenarios).
So this patch changes the signed data to unsigned data, thereby fixing
the incorrect address extension like this:
```
.gcc_except_table
LSDA:
LPStartEncoding: DW_EH_PE_omit // No LPStart
CallSiteEncoding: DW_EH_PE_sdata4 -> udata4 // Changed from sdata4 to udata4
call-site table:
call-site 1:
start = ...
[4 lines not shown]
sysctl_proc_args() did not check if uvm_io() returned no data, which
could result in uninitialised memory being returned. Rather than callers
of uvm_io() having to carefully check for this condition, treat it as an
error.
ok kettenis; initial report from Acts1631
[IR] Autoupgrade trivial VP intrinsics to their non-VP counterparts (#212490)
As a first step towards removing trivial VP intrinsics, autoupgrade them
to their non-VP counterparts for backwards compatibility. Subsequent PRs
can then remove the intrinsics themselves.
Since trivial VP intrinsics only set lanes to poison, it's safe to
replace them with non predicated versions.
RFC: https://discourse.llvm.org/t/rfc-remove-trivial-vp-intrinsics/90972
[CIR] Destroy a static local's extended temporary in its cir.local_init (#216210)
A temporary lifetime-extended by a function-local static had its
destructor hung off the cir.global, which the verifier rejects: a static
local is initialized and destroyed in-function under its guard, via
cir.local_init. Thread the region emitCXXSpecialVarDeclInit already
picks down to pushTemporaryCleanup, which registers into it in reverse
construction order.
Fixes SPEC2026: yaml-cpp's IsValidPlainScalar (736.ocio_r,
772/872.marian).
build: Fix debian package version omitting git commit for git builds
When building debian packages the git commit tag gets stripped off.
The immediate cause is from commit 1a33036df ("Add --bump=0 to alien").
According to the commit message, this was done to preserve the release
field, which "--bump=0" does not do. It correctly notes that '_' is an
invalid character for debian version strings.
Instead use '.' as a separator in the release instead of '_'. This is
valid for both DEB and RPM packages.
Replace "--bump=0" with "-k" to keep the release string from the RPM
unmodified when using it to form the DEB version.
Fixes: 1a33036df ("Add --bump=0 to alien")
Fixes: f6fb7651a ("Use 'git describe' for working builds")
Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Signed-off-by: Glenn Washburn <development at efficientek.com>
Closes #18938
comms/mbpoll: New port
mbpoll is a command line utility to communicate with ModBus slave
(RTU or TCP).
mbpoll can:
read discrete inputs
read and write binary outputs (coil)
read input registers
read and write output registers (holding register)
The reading and writing registers may be in decimal, hexadecimal or
floating single precision.
[SLP]Add extractelement as a main opcode for copyables
Model a bundle of extractelements from a common vector plus a foreign scalar
as a copyable node: matching lanes reuse the source vector and copyable lanes
are inserted into it. Limited to the identity extract order without a reuse
shuffle, other cases fall back to gather.
Fixes #192849
Reviewers: RKSimon, bababuck
Pull Request: https://github.com/llvm/llvm-project/pull/216503