SuccessChanges

Summary

  1. [AMDGPU] Simpler names for arch-specific ttmp registers. NFC. (details)
  2. [clangd] Use ASTSignals in Heuristics CC Ranking. (details)
  3. [Hexagon] Fix segment start to adjust for gaps between segments (details)
  4. [www] Fix background color in table cell. (details)
  5. [noalias.decl] Look through llvm.experimental.noalias.scope.decl (details)
  6. Consider ASan messages interesting for creduce (details)
  7. Add bounds checking assertions to APValue, NFC (details)
  8. [libc++] Unbreak the debug mode (details)
  9. [libc++] Make LIBCXX_ENABLE_FILESYSTEM fully consistent (details)
  10. [Clang][OpenMP] Fixed an issue that clang crashed when compiling OpenMP program in device only mode without host IR (details)
  11. [RISCV] Add DAG combine to turn (setcc X, 1, setne) -> (setcc X, 0, seteq) if we can prove X is 0/1. (details)
  12. [wasm][LLD] Rename --lto-new-pass-manager to --no-lto-legacy-pass-manager (details)
  13. [InstCombine] Add additional tests for select operand replacement (NFC) (details)
  14. Reapply [InstCombine] Replace one-use select operand based on condition (details)
  15. [ScalarizeMaskedMemIntrin] Add missing dependency (details)
  16. [libc++][P1679] add string contains (details)
Commit 18cb7441b69a22565dcc340bac0e58bc9f301439 by jay.foad
[AMDGPU] Simpler names for arch-specific ttmp registers. NFC.

Rename the *_gfx9_gfx10 ttmp registers to *_gfx9plus for simplicity,
and use the corresponding isGFX9Plus predicate to decide when to use
them instead of the old *_vi versions.

Differential Revision: https://reviews.llvm.org/D94975
The file was modifiedllvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp
The file was modifiedllvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.cpp
The file was modifiedllvm/lib/Target/AMDGPU/SIRegisterInfo.td
The file was modifiedllvm/lib/Target/AMDGPU/SIDefines.h
Commit 17846ed5af4a83334ef7d07f0b4a9d525e6ec0db by usx
[clangd] Use ASTSignals in Heuristics CC Ranking.

Differential Revision: https://reviews.llvm.org/D94927
The file was modifiedclang-tools-extra/clangd/Quality.cpp
Commit 57443bfb4ab06f7dc45f802119efc1068289cdd9 by kparzysz
[Hexagon] Fix segment start to adjust for gaps between segments

The Hexagon Vector Combine pass genertes stores for a complete
aligned vector. The start of each section is a multiple of the
vector size, so that value is passed to normalize to compute
the offset of the stores in the section.  The first store may
not occur at offset 0 when there is a gap between sections.
The file was addedllvm/test/CodeGen/Hexagon/autohvx/vector-align-store-mask.ll
The file was modifiedllvm/lib/Target/Hexagon/HexagonVectorCombine.cpp
Commit 987760b463c1303121fff8197c4ebc66b61f0616 by richard
[www] Fix background color in table cell.
The file was modifiedclang/www/cxx_status.html
Commit 121cac01e8f8afe6ed2bb0b8ffe92f323776a716 by jeroen.dobbelaere
[noalias.decl] Look through llvm.experimental.noalias.scope.decl

Just like llvm.assume, there are a lot of cases where we can just ignore llvm.experimental.noalias.scope.decl.

Reviewed By: nikic

Differential Revision: https://reviews.llvm.org/D93042
The file was addedllvm/test/Analysis/BasicAA/noalias-scope-decl.ll
The file was modifiedllvm/test/Analysis/CostModel/X86/free-intrinsics.ll
The file was modifiedllvm/include/llvm/Analysis/TargetTransformInfoImpl.h
The file was modifiedllvm/test/Analysis/CostModel/free-intrinsics-no_info.ll
The file was addedllvm/test/Transforms/EarlyCSE/noalias-scope-decl.ll
The file was modifiedllvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp
The file was addedllvm/test/Transforms/LoopVectorize/noalias-scope-decl.ll
The file was modifiedllvm/lib/Analysis/AliasSetTracker.cpp
The file was modifiedllvm/lib/Analysis/VectorUtils.cpp
The file was modifiedllvm/include/llvm/Analysis/VectorUtils.h
The file was modifiedllvm/lib/Transforms/Scalar/EarlyCSE.cpp
The file was modifiedllvm/lib/CodeGen/Analysis.cpp
The file was modifiedllvm/lib/Transforms/Vectorize/LoopVectorize.cpp
The file was modifiedllvm/test/Analysis/CostModel/free-intrinsics-datalayout.ll
The file was addedllvm/test/Analysis/MemorySSA/noalias-scope-decl.ll
The file was modifiedllvm/test/Analysis/AliasSet/intrinsics.ll
The file was modifiedllvm/lib/Analysis/MemorySSA.cpp
The file was modifiedllvm/lib/Analysis/ValueTracking.cpp
Commit 6f69f2ed61ae805df496fc86ef22e7685573d556 by rnk
Consider ASan messages interesting for creduce

Helped me reduce llvm.org/pr48582
The file was modifiedclang/utils/creduce-clang-crash.py
Commit e678656625a3e2b6a5f2849f4a6f7612ceeaed07 by rnk
Add bounds checking assertions to APValue, NFC

These checks help find llvm.org/pr48582 without ASan
The file was modifiedclang/include/clang/AST/APValue.h
Commit 68dba7eae1df333738d1c77cbbefd480995c1972 by Louis Dionne
[libc++] Unbreak the debug mode

When the Debug mode is enabled, we disable extern declarations because we
don't want to use the functions compiled in the library, which might not
have had the debug mode enabled when built. However, some extern declarations
need to be kept, because code correctness depends on it.

31e820378b8a removed those declarations, which had the unintended
consequence of breaking the debug build. This commit fixes that by
re-introducing a separate macro for the required extern declarations,
and adds a comment so that we don't fall into that trap in the future.

Differential Revision: https://reviews.llvm.org/D94718
The file was addedlibcxx/test/libcxx/debug/extern-templates.sh.cpp
The file was modifiedlibcxx/include/__config
The file was modifiedlibcxx/include/locale
The file was modifiedlibcxx/include/__locale
Commit 933518fff82c8f39626bbcca81adc516483a9651 by Louis Dionne
[libc++] Make LIBCXX_ENABLE_FILESYSTEM fully consistent

Previously, LIBCXX_ENABLE_FILESYSTEM controlled only whether the filesystem
support was compiled into libc++'s library. This commit promotes the
setting to a first-class option like LIBCXX_ENABLE_LOCALIZATION, where
the whole library is aware of the setting and features that depend on
<filesystem> won't be provided at all. The test suite is also properly
annotated such that tests that depend on <filesystem> are disabled when
the library doesn't support it.

This is an alternative to https://llvm.org/D94824, but also an improvement
along the lines of LIBCXX_ENABLE_LOCALIZATION that I had been wanting to
make for a while.

Differential Revision: https://reviews.llvm.org/D94921
The file was modifiedlibcxx/utils/ci/macos-backdeployment.sh
The file was modifiedlibcxx/test/libcxx/experimental/filesystem/deprecated.verify.cpp
The file was modifiedlibcxx/test/libcxx/min_max_macros.compile.pass.cpp
The file was modifiedlibcxx/utils/generate_feature_test_macro_components.py
The file was modifiedlibcxx/test/std/experimental/filesystem/fs.req.namespace/namespace.pass.cpp
The file was modifiedlibcxx/include/filesystem
The file was modifiedlibcxx/test/std/input.output/file.streams/fstreams/filebuf.members/open_path.pass.cpp
The file was modifiedlibcxx/test/libcxx/no_assert_include.compile.pass.cpp
The file was modifiedlibcxx/utils/libcxx/test/params.py
The file was modifiedlibcxx/test/std/utilities/time/time.clock/time.clock.file/now.pass.cpp
The file was modifiedlibcxx/test/libcxx/modules/inttypes_h_exports.compile.pass.cpp
The file was modifiedlibcxx/test/libcxx/modules/cinttypes_exports.compile.pass.cpp
The file was modifiedlibcxx/include/fstream
The file was modifiedlibcxx/CMakeLists.txt
The file was modifiedlibcxx/test/std/language.support/support.limits/support.limits.general/filesystem.version.pass.cpp
The file was modifiedlibcxx/test/std/input.output/file.streams/fstreams/ifstream.cons/path.pass.cpp
The file was modifiedlibcxx/utils/generate_header_tests.py
The file was modifiedlibcxx/utils/ci/run-buildbot
The file was modifiedlibcxx/test/libcxx/experimental/filesystem/version.pass.cpp
The file was modifiedlibcxx/test/std/experimental/filesystem/fs.req.macros/feature_macro.pass.cpp
The file was modifiedlibcxx/test/std/input.output/file.streams/fstreams/fstream.members/open_path.pass.cpp
The file was modifiedlibcxx/test/std/input.output/file.streams/fstreams/ifstream.members/open_path.pass.cpp
The file was modifiedlibcxx/test/std/input.output/file.streams/fstreams/fstream.cons/path.pass.cpp
The file was modifiedlibcxx/test/std/input.output/filesystems/lit.local.cfg
The file was modifiedlibcxx/utils/ci/buildkite-pipeline.yml
The file was modifiedlibcxx/test/libcxx/modules/stds_include.sh.cpp
The file was modifiedlibcxx/test/libcxx/modules/stdint_h_exports.compile.pass.cpp
The file was modifiedlibcxx/test/libcxx/modules/cstdint_exports.compile.pass.cpp
The file was modifiedlibcxx/include/__config_site.in
The file was modifiedlibcxx/test/configs/legacy.cfg.in
The file was modifiedlibcxx/test/std/input.output/file.streams/fstreams/ofstream.cons/path.pass.cpp
The file was modifiedlibcxx/test/std/input.output/file.streams/fstreams/ofstream.members/open_path.pass.cpp
The file was addedlibcxx/cmake/caches/Generic-no-filesystem.cmake
The file was modifiedlibcxx/test/libcxx/double_include.sh.cpp
The file was modifiedlibcxx/test/libcxx/modules/clocale_exports.compile.pass.cpp
The file was modifiedlibcxx/utils/libcxx/test/features.py
Commit 82e537a9d28a2c18bd1637e2eac0e0af658ed829 by tianshilei1992
[Clang][OpenMP] Fixed an issue that clang crashed when compiling OpenMP program in device only mode without host IR

D94745 rewrites the `deviceRTLs` using OpenMP and compiles it by directly
calling the device compilation. `clang` crashes because entry in
`OffloadEntriesDeviceGlobalVar` is unintialized. Current design supposes the
device compilation can only be invoked after host compilation with the host IR
such that `clang` can initialize `OffloadEntriesDeviceGlobalVar` from host IR.
This avoids us using device compilation directly, especially when we only have
code wrapped into `declare target` which are all device code. The same issue
also exists for `OffloadEntriesInfoManager`.

In this patch, we simply initialized an entry if it is not in the maps. Not sure
we need an option to tell the device compiler that it is invoked standalone.

Reviewed By: jdoerfert

Differential Revision: https://reviews.llvm.org/D94871
The file was modifiedclang/lib/CodeGen/CGOpenMPRuntime.cpp
The file was addedclang/test/OpenMP/declare_target_device_only_compilation.cpp
Commit ce8b3937ddad39536e6e715813682d9198229fb5 by craig.topper
[RISCV] Add DAG combine to turn (setcc X, 1, setne) -> (setcc X, 0, seteq) if we can prove X is 0/1.

If we are able to compare with 0 instead of 1, we might be able
to fold the setcc into a beqz/bnez.

Often these setccs start life as an xor that gets converted to
a setcc by DAG combiner's rebuildSetcc. I looked into a detecting
(xor X, 1) and converting to (seteq X, 0) based on boolean contents
being 0/1 in rebuildSetcc instead of using computeKnownBits. It was
very perturbing to AMDGPU tests which I didn't look closely at.
It had a few changes on a couple other targets, but didn't seem
to be much if any improvement.

Reviewed By: lenary

Differential Revision: https://reviews.llvm.org/D94730
The file was modifiedllvm/test/CodeGen/RISCV/half-br-fcmp.ll
The file was modifiedllvm/lib/Target/RISCV/RISCVISelLowering.cpp
The file was modifiedllvm/test/CodeGen/RISCV/double-br-fcmp.ll
The file was modifiedllvm/include/llvm/CodeGen/ISDOpcodes.h
The file was modifiedllvm/test/CodeGen/RISCV/select-and.ll
The file was modifiedllvm/test/CodeGen/RISCV/select-or.ll
The file was modifiedllvm/test/CodeGen/RISCV/float-br-fcmp.ll
Commit a23178690987f04a09125d712ec3168b084539bb by aeubanks
[wasm][LLD] Rename --lto-new-pass-manager to --no-lto-legacy-pass-manager

This follows a similar ELF change.

Reviewed By: MaskRay, sbc100

Differential Revision: https://reviews.llvm.org/D93253
The file was modifiedlld/test/wasm/lto/verify-invalid.ll
The file was modifiedlld/test/wasm/lto/new-pass-manager.ll
The file was modifiedlld/wasm/Options.td
The file was modifiedlld/wasm/Driver.cpp
Commit bedbb58203cd67a46f64a0182dc1e6717b3c536c by nikita.ppv
[InstCombine] Add additional tests for select operand replacement (NFC)

In particular, add tests for speculatable and non-speculatable
instructions.
The file was modifiedllvm/test/Transforms/InstCombine/select-binop-cmp.ll
Commit 21443381c00d9d5ddd6a73f2f839dc4872d79463 by nikita.ppv
Reapply [InstCombine] Replace one-use select operand based on condition

Relative to the original change, this adds a check that the
instruction on which we're replacing operands is safe to speculatively
execute, because that's what we're effectively doing. We're executing
the instruction with the replaced operand, which is fine if it's pure,
but not fine if can cause side-effects or UB (aka is not speculatable).

Additionally, we cannot (generally) replace operands in phi nodes,
as these may refer to a different loop iteration. This is also covered
by the speculation check.

-----

InstCombine already performs a fold where X == Y ? f(X) : Z is
transformed to X == Y ? f(Y) : Z if f(Y) simplifies. However,
if f(X) only has one use, then we can always directly replace the
use inside the instruction. To actually be profitable, limit it to
the case where Y is a non-expr constant.

This could be further extended to replace uses further up a one-use
instruction chain, but for now this only looks one level up.

Among other things, this also subsumes D94860.

Differential Revision: https://reviews.llvm.org/D94862
The file was modifiedllvm/test/Transforms/InstCombine/select-safe-transforms.ll
The file was modifiedllvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
The file was modifiedllvm/test/Transforms/InstCombine/select-binop-cmp.ll
Commit 7113de301a846521a2bdd73d44ac9cf5827b37a6 by mariya.podchishchaeva
[ScalarizeMaskedMemIntrin] Add missing dependency

The pass has dependency on 'TargetTransformInfoWrapperPass', but the
corresponding call to INITIALIZE_PASS_DEPENDENCY was missing.

Differential Revision: https://reviews.llvm.org/D94916
The file was modifiedllvm/lib/Transforms/Scalar/ScalarizeMaskedMemIntrin.cpp
Commit 6ac9cb2a7c6c19797fc778f3d441a6fb7b69793c by Louis Dionne
[libc++][P1679] add string contains

C++23 string contains implementation and tests

Paper: https://wg21.link/P1679R3
Standard (string): https://eel.is/c++draft/string.contains
Standard (string_view): https://eel.is/c++draft/string.view.ops#lib:contains,basic_string_view

Differential Revision: https://reviews.llvm.org/D93912
The file was addedlibcxx/test/std/strings/basic.string/string.contains/contains.string_view.pass.cpp
The file was modifiedlibcxx/utils/generate_feature_test_macro_components.py
The file was addedlibcxx/test/std/strings/basic.string/string.contains/contains.char.pass.cpp
The file was modifiedlibcxx/test/std/language.support/support.limits/support.limits.general/version.version.pass.cpp
The file was addedlibcxx/test/std/strings/string.view/string.view.template/contains.char.pass.cpp
The file was addedlibcxx/test/std/strings/string.view/string.view.template/contains.string_view.pass.cpp
The file was addedlibcxx/test/std/strings/string.view/string.view.template/contains.ptr.pass.cpp
The file was modifiedlibcxx/test/std/language.support/support.limits/support.limits.general/string.version.pass.cpp
The file was modifiedlibcxx/test/std/language.support/support.limits/support.limits.general/string_view.version.pass.cpp
The file was modifiedlibcxx/docs/FeatureTestMacroTable.rst
The file was modifiedlibcxx/include/version
The file was modifiedlibcxx/include/string
The file was modifiedlibcxx/include/string_view
The file was addedlibcxx/test/std/strings/basic.string/string.contains/contains.ptr.pass.cpp