[SLP] Treat extracts from undef vectors as real, not free, extracts
tryToGatherSingleRegisterExtractElements classified an extractelement whose
vector operand was undef as a free undef extract via UndefVectorExtracts.
When the remaining extracts already filled the two-vector shuffle budget,
the resulting build vector contained a third distinct vector operand and
tripped the assertion "Expected only 1 or 2 vectors shuffle." in
processBuildVector.
Use isUndefVector with IsPoisonOnly=true so that only extracts from poison
vectors are still treated as free.
Fixes #196015.
Reviewers:
Pull Request: https://github.com/llvm/llvm-project/pull/196150
[libc][stdlib] Add EnvironmentManager (#195260)
Introduced an EnvironmentManager singleton that centralises environment
variable state: the environ array, per-string ownership tracking, and
capacity management. The manager exposes a minimal public API (get,
begin/end iterators) and keeps all internal state private.
Refactored getenv to delegate to EnvironmentManager::get() rather than
directly iterating app.env_ptr.
The ownership tracking and capacity management are preparatory
infrastructure for setenv.
Assisted-by: Automated tooling, human reviewed.
[dsymutil] Fix linker's ODR uniquing for typedefs with different underlying types (#195749)
The classic DWARF linker's `DeclContext` uniquing for `typedef` only
considers the typedef's name, file, and line — not the type it refers
to. When two `typedef` share the same name and source location but point
to different underlying types (e.g. due to clang's `preferred_name`
attribute generating a second typedef), they get the same `DeclContext`.
ODR deduplication then merges them, which can produce incorrect type
references or self-referencing typedef cycles in the output DWARF.
The self-referencing cycles are latent until a consumer follows
`DW_AT_type` chains through typedefs.
In particular, `unwrapReferencedTypedefType()` (introduced in
[#168734](https://github.com/llvm/llvm-project/pull/168734)) caused an
infinite recursion and eventual stack overflow.
Fix this by including the `DW_AT_type` target's tag and name in the
`NameForUniquing`, such that `typedef` with different underlying types
get distinct `DeclContexts`. This mirrors the parallel linker fix in
[9 lines not shown]
[BOLT] Rework user-facing documentation of BOLT gadget scanner (#176446)
Update the documentation to reflect the changes made to the original
prototype.
Co-authored-by: Kristof Beyls <kristof.beyls at arm.com>
Co-authored-by: Harald van Dijk <hdijk at accesssoftek.com>
15.1/relnotes: Mention ENA/arm64 irq mapping fix
This is technically a general intrng bug fix, but I'm not aware of the
bug affecting anything other than ena(4) on arm64 so I'm listing this
under "Cloud Support".
Sponsored by: Amazon
15.1/relnotes: Clarify Extended Destination ID
We don't merely recognize bits in CPUID; we make use of it to allow
FreeBSD to run on larger VMs, including EC2 r8i.96xlarge.
Sponsored by: Amazon
Revert "[lit] [compiler-rt] Add llvm-lit global command cache to speed up test config" (#196139)
Reverts llvm/llvm-project#195888
`functools.cache` is not available until Python 3.9 whereas LLVM's
minimum python version is 3.8.
`date -Ins` also seems nonportable.
[SystemZ] Fix internal error with single-element vector types (#196127)
The special treatment of single-element 128-bit vector types in
SystemZTargetLowering::getRegisterTypeForCallingConv is not appropriate
if vector types are not supported, and can lead to internal compiler
errors.
Fixes: https://github.com/llvm/llvm-project/issues/194256
[llvm-profgen] Fix OpenCSD test and build issues (#195694)
1) Replace non-portable hex escapes in printf with POSIX-compliant octal
escapes in etm tests to fix
failures on Mac.
2) Define OCSD_USE_STATIC_C_API when building
LLVMProfileData on Windows to prevent incorrect dllimport interpretation
when linking against static OpenCSD libraries.
3) Update ProfileData to use the OPENCSD_ROOT hint when resolving
dependency paths and to support linking both static libraries for
OpenCSD.
Pull up the following, requested by mrg in ticket #1255:
xsrc/external/mit/xorg-server/dist/SECURITY.md up to 1.1.1.1
xsrc/external/mit/xorg-server/dist/COPYING up to 1.1.1.8
xsrc/external/mit/xorg-server/dist/ChangeLog up to 1.1.1.32
xsrc/external/mit/xorg-server/dist/Makefile.am up to 1.1.1.9
xsrc/external/mit/xorg-server/dist/Makefile.in up to 1.1.1.20
xsrc/external/mit/xorg-server/dist/aclocal.m4 up to 1.1.1.25
xsrc/external/mit/xorg-server/dist/config.guess up to 1.1.1.19
xsrc/external/mit/xorg-server/dist/config.sub up to 1.1.1.19
xsrc/external/mit/xorg-server/dist/configure up to 1.25
xsrc/external/mit/xorg-server/dist/configure.ac up to 1.27
xsrc/external/mit/xorg-server/dist/meson.build up to 1.1.1.22
xsrc/external/mit/xorg-server/dist/Xext/xf86bigfont.c up to 1.3
xsrc/external/mit/xorg-server/dist/dix/dixfonts.c up to 1.8
xsrc/external/mit/xorg-server/dist/dix/events.c up to 1.10
xsrc/external/mit/xorg-server/dist/dix/gc.c up to 1.1.1.9
xsrc/external/mit/xorg-server/dist/glamor/glamor.c up to 1.1.1.10
xsrc/external/mit/xorg-server/dist/glamor/glamor_core.c up to 1.1.1.4
[32 lines not shown]
[NFC][PassManager] Make PassInfoMixin/AnalysisInfoMixin inherit from detail::InfoMixin (#196130)
AnalysisInfoMixin just needs `name()`, not the other pass-specific
stuff.
Fix one pass that accidentally inherited from AnalysisInfoMixin.
Pull up the following, requested by mrg in ticket #258:
xsrc/external/mit/xorg-server/dist/SECURITY.md up to 1.1.1.1
xsrc/external/mit/xorg-server/dist/COPYING up to 1.1.1.8
xsrc/external/mit/xorg-server/dist/ChangeLog up to 1.1.1.32
xsrc/external/mit/xorg-server/dist/Makefile.am up to 1.1.1.9
xsrc/external/mit/xorg-server/dist/Makefile.in up to 1.1.1.20
xsrc/external/mit/xorg-server/dist/aclocal.m4 up to 1.1.1.25
xsrc/external/mit/xorg-server/dist/config.guess up to 1.1.1.19
xsrc/external/mit/xorg-server/dist/config.sub up to 1.1.1.19
xsrc/external/mit/xorg-server/dist/configure up to 1.25
xsrc/external/mit/xorg-server/dist/configure.ac up to 1.27
xsrc/external/mit/xorg-server/dist/meson.build up to 1.1.1.22
xsrc/external/mit/xorg-server/dist/Xext/xf86bigfont.c up to 1.3
xsrc/external/mit/xorg-server/dist/dix/dixfonts.c up to 1.8
xsrc/external/mit/xorg-server/dist/dix/events.c up to 1.10
xsrc/external/mit/xorg-server/dist/dix/gc.c up to 1.1.1.9
xsrc/external/mit/xorg-server/dist/glamor/glamor.c up to 1.1.1.10
xsrc/external/mit/xorg-server/dist/glamor/glamor_core.c up to 1.1.1.4
[32 lines not shown]
[clang] Don't omit null pointer checks with -fms-kernel (#193800)
In kernel space, a null (zero) address may be valid, so treating it as "always invalid" and bypassing null checks is not correct. With -fms-kernel, we override the default behavior and disable assumptions about null pointers. However, -fdelete-null-pointer-checks can still be used to re-enable these optimizations.
[lldb-dap] Make lldbDAP an OBJECT library (NFC) (#196108)
Convert lldbDAP from a static library to an OBJECT library and move its
LINK_COMPONENTS (Option, Support) and LINK_LIBS (liblldb, lldbHost) to
its consumers (the lldb-dap tool and the DAPTests unit test).
This avoids transitive propagation of LLVM's static components through
lldbDAP, which would otherwise collide with the same symbols re-exported
by liblldb when LLDB_EXPORT_ALL_SYMBOLS is enabled, breaking
llvm::Error's RTTI (e.g. ErrorInfoBase::ID) across library boundaries.
Extracted from #189718 for easier reviewing.