Changes

Summary

  1. [libc] Exclude few build steps under riscv. (details)
Commit 5aa8591622a722e9f52d58b167e1a4d898b0f50d by sivachandra
[libc] Exclude few build steps under riscv.
The file was modifiedzorg/buildbot/builders/annotated/libc-linux.py (diff)

Summary

  1. [X86] Add test coverage for D137388 (details)
  2. [libc] Set the stub filename to the target name instead of the source (details)
  3. Remove an unused private data member; NFC (details)
  4. [InstCombine] Fix infinite combine loop (PR61361) (details)
  5. [AIX] change "llvm-ar" to "env OBJECT_MODE=any llvm-ar" in clang/test for AIX OS (details)
  6. [InstCombine] Return instruction from replaceUse() (details)
  7. [mlir] relax value handle updates when operation is replaced (details)
  8. [Pipelines] Restore old DAE position in LTO pipeline (details)
  9. [Pipeline] Move some GlobalOpt/GlobalDCE runs into simplification pipeline (details)
  10. [Flang][OpenMP] Add support for OpenMP max reduction (details)
  11. [RISCV][test][llvm-objdump] Add test cases for objdump's handling of RISCV arch attributes (details)
  12. [OpenMP]Skip generating this[:1] map info for non-member variable. (details)
  13. [gn build] Fix gn build (details)
  14. Revert "[Flang][OpenMP] Add support for OpenMP max reduction" (details)
  15. [AssumeBundleBuilder] Fix PreservedAnalyses reporting (details)
  16. [libc++] Qualifies uint32_t and friends. (details)
  17. [libc++][CI] Improves Dockerfile (details)
  18. [CoroCleanup] Invalidate analyses on changed functions before running SimplifyCFG (details)
  19. [RISCV][NFC] Small refactor in RISCVISAInfo::parseArchString (details)
  20. Revert "[InstCombine] Return instruction from replaceUse()" (details)
  21. [LLVM] Remove support for constant scalable vector GEPs. (details)
  22. [StandardInstrumentations][NFC] Minor code cleanup (details)
  23. [SemaCXX]use CorrectDelayedTyposInExpr in ActOnCXXFoldExpr only when Diag (details)
  24. [SLP]Remove CreateShuffle lambda and reuse ShuffleBuilder functions. (details)
  25. [libc++][format] Addresses LWG3825. (details)
  26. [gn] minor cleanup after 33a55c3d8c73 (details)
  27. [gn] reformat all gn files (details)
  28. Move utility for acting on each lane of ElementCount to common code [nfc] (details)
  29. [StructuralHash][NFC] Use anonymous namespace (details)
  30. [NFC][libc++][format] Improves diagnostics. (details)
  31. [RISCV] Fix regression due to interaction of MachineOutliner and MachineCopyPropagation (details)
Commit cb47e254e52244548cebfa4d9848f1f10dee7cf2 by llvm-dev
[X86] Add test coverage for D137388

Issue #58914 reported an example of the TwoAddressInstruction crash that was fixed (without test case) in D137388
The file was addedllvm/test/CodeGen/X86/pr58914.mir
Commit c2a17bff24f0b76c7aedd2f2396eae154c95de60 by jhuber6
[libc] Set the stub filename to the target name instead of the source

The GPU target requires some weird special case handling to create fat
binaries. CMake offers no way to set the name of an object library. The
only way to do this is to create a file with the desired name and use
that. Currently we name it after the source filename. However, this
breaks if there is more than a single source. This patch changes the
logic to instead look up the object target name and use that. E.g.
`src.__support.OSUtil.osutil` will be `osutil.cpp`.

Reviewed By: sivachandra

Differential Revision: https://reviews.llvm.org/D145912
The file was modifiedlibc/cmake/modules/LLVMLibCObjectRules.cmake (diff)
Commit f2a6fe601a862b4520266cd660ae4a130886ef33 by aaron
Remove an unused private data member; NFC
The file was modifiedclang/lib/Sema/SemaStmt.cpp (diff)
Commit 271b5cf562fc6947598377d7c7ba76d9485e71e4 by npopov
[InstCombine] Fix infinite combine loop (PR61361)

In the degenerate case where the select is fed by an unsimplified
icmp with two constant operands, don't try to replace one constant
with another. Wait for the icmp to be simplified first instead.

Fixes https://github.com/llvm/llvm-project/issues/61361.
The file was modifiedllvm/lib/Transforms/InstCombine/InstCombineSelect.cpp (diff)
The file was modifiedllvm/test/Transforms/InstCombine/select.ll (diff)
Commit 9afcebb2202eb705da1ddbf6b36c1f5629042f6e by zhijian
[AIX] change "llvm-ar" to "env OBJECT_MODE=any llvm-ar" in clang/test for AIX OS

Summary:

In patch https://reviews.llvm.org/D127864. we add a new option -X for AIX OS, and default value is -X32. In order not effect the test cases in clang/test. we need to change "llvm-ar" to "env OBJECT_MODE=any llvm-ar" in clang/test for AIX OS

Differential Revision: https://reviews.llvm.org/D145600
The file was modifiedclang/test/lit.cfg.py (diff)
The file was modifiedclang/test/Driver/linker-wrapper-libs.c (diff)
Commit 27c4e233104ba765cd986b3f8b0dcd3a6c3a9f89 by npopov
[InstCombine] Return instruction from replaceUse()

Same as with other replacement methods, it's generally necessary
to report a change on the instruction itself, e.g. by returning
it from the visit method (or possibly explicitly adding it to the
worklist).

Return Instruction * from replaceUse() to encourage the usual
"return replaceXYZ" pattern.
The file was modifiedllvm/lib/Transforms/InstCombine/InstCombineCalls.cpp (diff)
The file was modifiedllvm/include/llvm/Transforms/InstCombine/InstCombiner.h (diff)
The file was modifiedllvm/lib/Transforms/InstCombine/InstCombineSelect.cpp (diff)
Commit d9db5a5904fd328130a5dd100e3cf36eb7d9e6d0 by zinenko
[mlir] relax value handle updates when operation is replaced

The initial implementaiton of value handle update when the payload
operation defining the values associated with value handles was being
replaced required the replacement operation to have the same number of
results. This is not strictly necessary. The replacement operation may
have more results, or less results provided that there are no handles to
the results that have no equivalent in the replacement op.

Reviewed By: springerm

Differential Revision: https://reviews.llvm.org/D145254
The file was modifiedmlir/test/lib/Dialect/Transform/TestTransformDialectExtension.cpp (diff)
The file was modifiedmlir/test/Dialect/Transform/transform-state-extension.mlir (diff)
The file was modifiedmlir/lib/Dialect/Transform/IR/TransformInterfaces.cpp (diff)
Commit fb5683449e97bd8c2d107128dcf08d6f93789315 by npopov
[Pipelines] Restore old DAE position in LTO pipeline

This is a partial revert of D128830, restoring the previous
position of DeadArgElim in the fat LTO pipeline. The motivation
for this is a major code size regression observed in Rust and
illustrated in the PhaseOrdering test.

This is a conservative fix restoring the previous pipeline order.
The real problem is that the LTO pipeline is conceptually broken:
It doesn't have a CGSCC function simplification pipeline. The
inliner is just being run by itself. This wouldn't be a problem
if fat LTO used a standard design where ArgPromotion and DAE are
only run after functions have already been simplified by the
CGSCC inliner pipeline.

Differential Revision: https://reviews.llvm.org/D146051
The file was modifiedllvm/lib/Passes/PassBuilderPipelines.cpp (diff)
The file was modifiedllvm/test/Other/new-pm-lto-defaults.ll (diff)
The file was modifiedllvm/test/Transforms/PhaseOrdering/dae-dce.ll (diff)
Commit 87dadf0f5b06f08baa480633aeef0bc47d3a59a0 by aeubanks
[Pipeline] Move some GlobalOpt/GlobalDCE runs into simplification pipeline

These are very clearly more simplification than optimization.

Mostly NFC, except for some ordering around passes that don't really matter.

Reviewed By: nikic

Differential Revision: https://reviews.llvm.org/D145967
The file was modifiedllvm/lib/Passes/PassBuilderPipelines.cpp (diff)
Commit a7d80f43cb8d3a2deb09f57d0904732d40020752 by kiran.chandramohan
[Flang][OpenMP] Add support for OpenMP max reduction

This patch adds support for reduction of max-intrinsic for scalar
types. Max is lowered as a compare-select in the default lowering
flow for Flang. This pattern is matched and replaced with the
OpenMP dialect reduction operation.

Note: This is a temporary flow. The plan is to move to a flow where
the OpenMP reduction operation is inserted during lowering.

Reviewed By: do

Differential Revision: https://reviews.llvm.org/D145083
The file was removedflang/test/Lower/OpenMP/Todo/reduction-max.f90
The file was addedflang/test/Lower/OpenMP/wsloop-reduction-max.f90
The file was modifiedflang/lib/Lower/OpenMP.cpp (diff)
Commit 0ae8f5ac08ae61519e965808cf72f4f6ff09928d by asb
[RISCV][test][llvm-objdump] Add test cases for objdump's handling of RISCV arch attributes

In preparation for a follow-up patch to adjust the policy. The error for
an unrecognized version of the base ISA is particularly problematic, as
binaries produced from a current GCC are rejected.

The testing approach is modeled on the riscv-attributes.s file in
lld/test/ELF.
The file was addedllvm/test/tools/llvm-objdump/ELF/RISCV/riscv-attributes.s
Commit 3d9880ebbcb7d458753ac73a65b401af94c7b762 by jennifer.yu
[OpenMP]Skip generating this[:1] map info for non-member variable.

My change of D14093 is only fixed problem for "pragma target data".

The problem still here for "pragma target"
what I am missing is:
When processing "pragma target data", the VD is passed when call to
emitCombinedEntry, so check VD is null as map for this pointer.

But when processing "pragma target" the VD is passed as nullptr, so
check VD is null is not working.

To fix this I add a new parameter IsMapThis. During the call to
emitCombinedEntry passes true if it is capturing this pointer and use
that instead check of "!VD".

Differential Revision: https://reviews.llvm.org/D146000
The file was modifiedclang/lib/CodeGen/CGOpenMPRuntime.cpp (diff)
The file was modifiedclang/test/OpenMP/target_map_member_expr_codegen.cpp (diff)
The file was modifiedopenmp/libomptarget/test/mapping/target_map_for_member_data.cpp (diff)
Commit 33a55c3d8c73a60bad6572fe58452acc0975d0d0 by aeubanks
[gn build] Fix gn build
The file was addedllvm/utils/gn/secondary/lldb/source/Plugins/ObjectFile/Placeholder/BUILD.gn
The file was modifiedllvm/utils/gn/secondary/lldb/source/Plugins/Process/Utility/BUILD.gn (diff)
The file was modifiedllvm/utils/gn/secondary/lldb/source/Plugins/BUILD.gn (diff)
The file was modifiedllvm/utils/gn/secondary/clang/lib/Driver/BUILD.gn (diff)
The file was modifiedllvm/utils/gn/secondary/llvm/lib/Analysis/BUILD.gn (diff)
Commit 62fbb4c34e74aee4dc79dc36f5ee04002b6d9d7a by kiran.chandramohan
Revert "[Flang][OpenMP] Add support for OpenMP max reduction"

Reverting to fix a buildbot failure.

This reverts commit a7d80f43cb8d3a2deb09f57d0904732d40020752.
The file was modifiedflang/lib/Lower/OpenMP.cpp (diff)
The file was addedflang/test/Lower/OpenMP/Todo/reduction-max.f90
The file was removedflang/test/Lower/OpenMP/wsloop-reduction-max.f90
Commit f8bd0be602947c7b03dca744a27585cb5a08e548 by aeubanks
[AssumeBundleBuilder] Fix PreservedAnalyses reporting

These weren't properly reporting changes.
The file was modifiedllvm/lib/Transforms/Utils/AssumeBundleBuilder.cpp (diff)
The file was modifiedllvm/include/llvm/Transforms/Utils/AssumeBundleBuilder.h (diff)
Commit bd5d0fee9bbb3762ff26538f03d59926f5635c78 by koraq
[libc++] Qualifies uint32_t and friends.

This has been done using the following command
  find libcxx/test -type f -exec perl -pi -e 's|^([^/]+?)((?<!::)(?<!::u)u?int(_[a-z]+)?[0-9]{1,2}_t)|\1std::\2|' \{} \;

And manually removed some false positives in std/depr/depr.c.headers.

Reviewed By: ldionne, #libc

Differential Revision: https://reviews.llvm.org/D145880
The file was modifiedlibcxx/test/libcxx/fuzzing/random.pass.cpp (diff)
The file was modifiedlibcxx/test/std/experimental/simd/simd.traits/is_abi_tag.pass.cpp (diff)
The file was modifiedlibcxx/test/std/numerics/bit/bitops.count/countr_zero.pass.cpp (diff)
The file was modifiedlibcxx/test/std/numerics/rand/rand.dist/rand.dist.uni/rand.dist.uni.int/eval.pass.cpp (diff)
The file was modifiedlibcxx/test/libcxx/utilities/function.objects/unord.hash/murmur2_or_cityhash_ubsan_unsigned_overflow_ignored.pass.cpp (diff)
The file was modifiedlibcxx/test/libcxx/utilities/utility/__murmur2_or_cityhash.abi-v2.pass.cpp (diff)
The file was modifiedlibcxx/test/std/numerics/bit/bit.pow.two/bit_floor.pass.cpp (diff)
The file was modifiedlibcxx/test/std/experimental/simd/simd.traits/is_simd_mask.pass.cpp (diff)
The file was modifiedlibcxx/test/std/numerics/bit/bitops.count/countl_one.pass.cpp (diff)
The file was modifiedlibcxx/test/libcxx/type_traits/is_always_bitcastable.compile.pass.cpp (diff)
The file was modifiedlibcxx/test/std/numerics/bit/bit.pow.two/bit_ceil.pass.cpp (diff)
The file was modifiedlibcxx/test/std/numerics/rand/rand.eng/rand.eng.sub/ctor_result_type.pass.cpp (diff)
The file was modifiedlibcxx/test/libcxx/strings/basic.string/string.iterators/debug.iterator.index.pass.cpp (diff)
The file was modifiedlibcxx/test/std/numerics/bit/bitops.count/countl_zero.pass.cpp (diff)
The file was modifiedlibcxx/test/libcxx/strings/basic.string/alignof.compile.pass.cpp (diff)
The file was modifiedlibcxx/test/std/time/time.hms/time.hms.members/seconds.pass.cpp (diff)
The file was modifiedlibcxx/test/std/containers/sequences/vector/vector.cons/construct_iter_iter.pass.cpp (diff)
The file was modifiedlibcxx/test/std/containers/sequences/deque/abi.compile.pass.cpp (diff)
The file was modifiedlibcxx/test/std/numerics/rand/rand.dist/rand.dist.bern/rand.dist.bern.bin/eval.pass.cpp (diff)
The file was modifiedlibcxx/test/std/iterators/iterator.container/ssize.pass.cpp (diff)
The file was modifiedlibcxx/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/minmax_showbase.pass.cpp (diff)
The file was modifiedlibcxx/test/libcxx/numerics/numeric.ops/midpoint.integer.pass.cpp (diff)
The file was modifiedlibcxx/test/std/utilities/function.objects/unord.hash/integral.pass.cpp (diff)
The file was modifiedlibcxx/test/std/experimental/simd/simd.cons/load.pass.cpp (diff)
The file was modifiedlibcxx/test/std/utilities/charconv/charconv.msvc/floating_point_test_cases.hpp (diff)
The file was modifiedlibcxx/test/std/experimental/simd/simd.access/default.pass.cpp (diff)
The file was modifiedlibcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.last_write_time/last_write_time.pass.cpp (diff)
The file was modifiedlibcxx/test/std/numerics/bit/bitops.rot/rotl.pass.cpp (diff)
The file was modifiedlibcxx/test/std/numerics/bit/bit.pow.two/has_single_bit.pass.cpp (diff)
The file was modifiedlibcxx/test/std/utilities/function.objects/unord.hash/enum.pass.cpp (diff)
The file was modifiedlibcxx/test/std/experimental/simd/simd.abi/vector_extension.pass.cpp (diff)
The file was modifiedlibcxx/test/std/experimental/simd/simd.mem/load.pass.cpp (diff)
The file was modifiedlibcxx/test/libcxx/input.output/filesystems/convert_file_time.pass.cpp (diff)
The file was modifiedlibcxx/test/std/strings/basic.string/string.modifiers/string_assign/iterator.pass.cpp (diff)
The file was modifiedlibcxx/test/std/utilities/charconv/charconv.msvc/test.cpp (diff)
The file was modifiedlibcxx/test/std/experimental/simd/simd.mem/store.pass.cpp (diff)
The file was modifiedlibcxx/test/std/numerics/bit/bitops.count/countr_one.pass.cpp (diff)
The file was modifiedlibcxx/test/std/experimental/simd/simd.traits/is_simd_flag_type.pass.cpp (diff)
The file was modifiedlibcxx/test/std/numerics/bit/bit.pow.two/bit_width.pass.cpp (diff)
The file was modifiedlibcxx/test/std/utilities/format/format.functions/format_tests.h (diff)
The file was modifiedlibcxx/test/std/utilities/utility/utility.intcmp/intcmp.in_range/in_range.pass.cpp (diff)
The file was modifiedlibcxx/test/libcxx/utilities/format/format.arguments/format.arg/arg_t.compile.pass.cpp (diff)
The file was modifiedlibcxx/test/support/filesystem_test_helper.h (diff)
The file was modifiedlibcxx/test/std/language.support/support.srcloc/general.pass.cpp (diff)
The file was modifiedlibcxx/test/std/strings/basic.string/string.modifiers/string_append/iterator.pass.cpp (diff)
The file was modifiedlibcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.signed_integral.pass.cpp (diff)
The file was modifiedlibcxx/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/minus1.pass.cpp (diff)
The file was modifiedlibcxx/test/std/numerics/bit/bit.pow.two/bit_ceil.fail.cpp (diff)
The file was modifiedlibcxx/test/std/numerics/rand/rand.dist/rand.dist.samp/rand.dist.samp.discrete/eval.pass.cpp (diff)
The file was modifiedlibcxx/test/std/time/time.hms/time.hms.members/subseconds.pass.cpp (diff)
The file was modifiedlibcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_iter_iter.pass.cpp (diff)
The file was modifiedlibcxx/test/libcxx/containers/unord/next_pow2.pass.cpp (diff)
The file was modifiedlibcxx/test/libcxx/strings/basic.string/sizeof.compile.pass.cpp (diff)
The file was modifiedlibcxx/test/std/experimental/simd/simd.traits/is_simd.pass.cpp (diff)
The file was modifiedlibcxx/test/std/numerics/rand/rand.eng/rand.eng.mers/ctor_result_type.pass.cpp (diff)
The file was modifiedlibcxx/test/libcxx/utilities/utility/__murmur2_or_cityhash.abi-v1.pass.cpp (diff)
The file was modifiedlibcxx/test/std/experimental/simd/simd.casts/simd_cast.pass.cpp (diff)
The file was modifiedlibcxx/test/std/experimental/simd/simd.cons/default.pass.cpp (diff)
The file was modifiedlibcxx/test/std/numerics/numeric.ops/numeric.ops.midpoint/midpoint.integer.pass.cpp (diff)
The file was modifiedlibcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_iter_iter.pass.cpp (diff)
The file was modifiedlibcxx/test/std/numerics/bit/byteswap.pass.cpp (diff)
The file was modifiedlibcxx/test/std/experimental/simd/simd.cons/broadcast.pass.cpp (diff)
The file was modifiedlibcxx/test/std/utilities/charconv/charconv.to.chars/integral.pass.cpp (diff)
The file was modifiedlibcxx/test/std/numerics/bit/bitops.rot/rotr.pass.cpp (diff)
The file was modifiedlibcxx/test/std/time/time.syn/formatter.hh_mm_ss.pass.cpp (diff)
The file was modifiedlibcxx/test/support/atomic_helpers.h (diff)
The file was modifiedlibcxx/test/std/numerics/bit/bitops.count/popcount.pass.cpp (diff)
The file was modifiedlibcxx/test/std/atomics/types.pass.cpp (diff)
The file was modifiedlibcxx/test/std/experimental/simd/simd.cons/generator.pass.cpp (diff)
The file was modifiedlibcxx/test/support/format.functions.common.h (diff)
Commit d22cab2e11f4d89641e4578b381256501b2e3fc3 by koraq
[libc++][CI] Improves Dockerfile

- Remove temporary apt files
- Removes LLVM16 TODO

Reviewed By: #libc, ldionne

Differential Revision: https://reviews.llvm.org/D144575
The file was modifiedlibcxx/utils/ci/Dockerfile (diff)
Commit 3fd42f50d8aadb4d0c348ac17cd2115c1b0564a4 by aeubanks
[CoroCleanup] Invalidate analyses on changed functions before running SimplifyCFG

Or else the sub-FunctionPassManager may see out of date analyses.
The file was modifiedllvm/lib/Transforms/Coroutines/CoroCleanup.cpp (diff)
Commit b2fad8027ae630db6310fb925303643d4da35365 by asb
[RISCV][NFC] Small refactor in RISCVISAInfo::parseArchString

Slightly refactor handling of version extraction for the 'baseline' ISA,
to make an upcoming patch easier to review.
The file was modifiedllvm/lib/Support/RISCVISAInfo.cpp (diff)
Commit fdda602c04e43f7be8820996d3161abb71bec67b by npopov
Revert "[InstCombine] Return instruction from replaceUse()"

This reverts commit 27c4e233104ba765cd986b3f8b0dcd3a6c3a9f89.

I think I made a mistake with the use in RemoveConditionFromAssume(),
because the instruction being changed is not the current one, but
the next assume. Revert the change for now.
The file was modifiedllvm/lib/Transforms/InstCombine/InstCombineCalls.cpp (diff)
The file was modifiedllvm/lib/Transforms/InstCombine/InstCombineSelect.cpp (diff)
The file was modifiedllvm/include/llvm/Transforms/InstCombine/InstCombiner.h (diff)
Commit 62e46f262158e2a6ea9c1c458f52633bb40a8590 by paul.walker
[LLVM] Remove support for constant scalable vector GEPs.

This work has fallen out from D134648 as a requirement to loosen
the "constness" of vscale.

Differential Revision: https://reviews.llvm.org/D145404
The file was modifiedllvm/test/CodeGen/AArch64/sve-vscale.ll (diff)
The file was modifiedllvm/lib/IR/Constants.cpp (diff)
The file was modifiedllvm/lib/Bitcode/Reader/BitcodeReader.cpp (diff)
The file was modifiedllvm/lib/Analysis/ConstantFolding.cpp (diff)
The file was modifiedllvm/test/Transforms/InstSimplify/vscale.ll (diff)
The file was modifiedllvm/include/llvm/IR/Constants.h (diff)
The file was modifiedllvm/test/Transforms/InstSimplify/ConstProp/vscale-inseltpoison.ll (diff)
The file was modifiedllvm/lib/Analysis/InstructionSimplify.cpp (diff)
The file was modifiedllvm/include/llvm/IR/ConstantFolder.h (diff)
The file was modifiedllvm/test/Transforms/InstSimplify/vscale-inseltpoison.ll (diff)
The file was modifiedllvm/test/Bitcode/constexpr-scalable-vector-gep.ll (diff)
The file was modifiedllvm/test/Transforms/InstSimplify/ConstProp/vscale.ll (diff)
The file was modifiedllvm/include/llvm/Analysis/TargetFolder.h (diff)
Commit 507cba21c382ced5fc075ac74637847fbc2a4c07 by aeubanks
[StandardInstrumentations][NFC] Minor code cleanup
The file was modifiedllvm/include/llvm/Passes/StandardInstrumentations.h (diff)
The file was modifiedllvm/lib/Passes/StandardInstrumentations.cpp (diff)
Commit e417f02b5159c13f011335636faaf8c6847b627f by congcongcai0907
[SemaCXX]use CorrectDelayedTyposInExpr in ActOnCXXFoldExpr only when Diag

PR #61326

- fix clang crash when fold expression contains a delayed typos correction.

code snippet in `ActOnCXXFoldExpr`
```  if (!LHS || !RHS) {
    Expr *Pack = LHS ? LHS : RHS;
    assert(Pack && "fold expression with neither LHS nor RHS");
    DiscardOperands();
    if (!Pack->containsUnexpandedParameterPack())
      return Diag(EllipsisLoc, diag::err_pack_expansion_without_parameter_packs)
             << Pack->getSourceRange();
  }
```
`DiscardOperands` will be triggered when LHS/RHS is delayed typo correction expression.
It will output and clean all diagnose but still return a valid expression. (in else branch)
valid expression will be handled in caller function. When caller wants to output the diagnose, the diagnose in delayed typo correction expression has been consumed in `ActOnCXXFoldExpr`. It causes clang crash.

Reviewed By: erichkeane

Differential Revision: https://reviews.llvm.org/D145892
The file was modifiedclang/lib/Sema/SemaTemplateVariadic.cpp (diff)
The file was modifiedclang/docs/ReleaseNotes.rst (diff)
The file was addedclang/test/SemaCXX/fold_expr_typo.cpp
Commit 641939baa92835a3f588b2f68e6a8cda96a328ef by a.bataev
[SLP]Remove CreateShuffle lambda and reuse ShuffleBuilder functions.

After merging main part of the gather/buildvector code, CreateShuffle
lambda can removed and ShuffleBuilder add functions can be used instead.
Also, part of the code from CreateShuffle migrated to createShuffle of
the BaseShuffleAnalysis::createShuffle function for better code emission.

Differential Revision: https://reviews.llvm.org/D145988
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/buildvector-nodes-dependency.ll (diff)
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/entries-different-vf.ll (diff)
The file was modifiedllvm/test/Transforms/SLPVectorizer/AArch64/vectorize-free-extracts-inserts.ll (diff)
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/PR39774.ll (diff)
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/vect-gather-same-nodes.ll (diff)
The file was modifiedllvm/lib/Transforms/Vectorize/SLPVectorizer.cpp (diff)
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/lookahead.ll (diff)
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/gather-extractelements-different-bbs.ll (diff)
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/reduction-logical.ll (diff)
Commit ec5f7004c0878f44843f2a4be1dbda7045a212c1 by koraq
[libc++][format] Addresses LWG3825.

  LWG3825 Missing compile-time argument id check in
  basic_format_parse_context::next_arg_id

Reviewed By: #libc, ldionne

Differential Revision: https://reviews.llvm.org/D144327
The file was modifiedlibcxx/test/std/utilities/format/format.formatter/format.parse.ctx/next_arg_id.pass.cpp (diff)
The file was addedlibcxx/test/std/utilities/format/format.formatter/format.parse.ctx/next_arg_id.verify.cpp
The file was modifiedlibcxx/docs/Status/Cxx2bIssues.csv (diff)
The file was modifiedlibcxx/include/__format/format_parse_context.h (diff)
Commit 95375ffa0b45c00e41fa561b9eef5eb8e09ff7ab by thakis
[gn] minor cleanup after 33a55c3d8c73
The file was modifiedllvm/utils/gn/secondary/lldb/source/Plugins/ObjectFile/Placeholder/BUILD.gn (diff)
Commit f52c9500b426d249d083b747a70865e2a7190763 by thakis
[gn] reformat all gn files

I ran:

    git ls-files '*.gn' '*.gni' | xargs llvm/utils/gn/gn.py format
The file was modifiedllvm/utils/gn/secondary/compiler-rt/lib/scudo/BUILD.gn (diff)
The file was modifiedllvm/utils/gn/secondary/llvm/lib/Target/X86/BUILD.gn (diff)
The file was modifiedllvm/utils/gn/secondary/llvm/unittests/Target/AMDGPU/BUILD.gn (diff)
The file was modifiedllvm/utils/gn/secondary/llvm/lib/Transforms/Utils/BUILD.gn (diff)
Commit 9227f286acd8f411b74908b4f1a42a0d748b5cac by listmail
Move utility for acting on each lane of ElementCount to common code [nfc]

This was first written for AddressSanitizer, but I'm about to reuse it for MemorySanitizer as well.
The file was modifiedllvm/lib/Transforms/Utils/BasicBlockUtils.cpp (diff)
The file was modifiedllvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp (diff)
The file was modifiedllvm/include/llvm/Transforms/Utils/BasicBlockUtils.h (diff)
Commit b5776f10a3bca8fd32a609ce197cc0ebfba1e6ff by aeubanks
[StructuralHash][NFC] Use anonymous namespace
The file was modifiedllvm/lib/IR/StructuralHash.cpp (diff)
Commit a51e4026900af39208267c1c2aaea300d0ae8427 by koraq
[NFC][libc++][format] Improves diagnostics.

While implementing the tests for LWG3720 I noticed the std::format
errors for non-formattable types are not user friendly (and thus hard to
write a .verify test too).

The issue stems from using a deleted function for invalid types. By
using a function that returns an invalid value the diagnostics become a
lot better. Before this change the existing "invalid value"
static_assert could never trigger. Now it can be triggered by user
code, therefore a diagnostic message has been added.

Before this change using a non-formattable type resulted in list of
error messages along the line of

    .../include/c++/v1/__format/format_arg_store.h:167:29: error: call to deleted function '__determine_arg_t'
      constexpr __arg_t __arg = __determine_arg_t<_Context, remove_cvref_t<_Tp>>();
                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    .../include/c++/v1/__format/format_arg_store.h:210:54: note: in instantiation of function template specialization 'std::__format::__create_format_arg<std::format_context, char16_t &>' requested here
            basic_format_arg<_Context> __arg = __format::__create_format_arg<_Context>(__args);
                                                         ^
    .../include/c++/v1/__format/format_arg_store.h:246:19: note: in instantiation of function template specialization 'std::__format::__create_packed_storage<std::format_context, int &, char16_t &>' requested here
            __format::__create_packed_storage(__storage.__types_, __storage.__values_, __args...);
                      ^
    .../include/c++/v1/__format/format_functions.h:73:10: note: in instantiation of member function 'std::__format_arg_store<std::format_context, int &, char16_t &>::__format_arg_store' requested here
      return _VSTD::__format_arg_store<_Context, _Args...>(__args...);
             ^
    .../include/c++/v1/__config:664:17: note: expanded from macro '_VSTD'
    #  define _VSTD std
                    ^
    .../libcxx/test/std/utilities/format/format.string/format.string.std/lwg3720_arg_id_width_precision_allowed_types.pass.cpp:46:50: note: in instantiation of function template specialization 'std::make_format_args<std::format_context, int &, char16_t &>' requested here
        TEST_IGNORE_NODISCARD std::vformat(fmt, std::make_format_args<context_t<CharT>>(args...));
                                                     ^
    .../libcxx/test/std/utilities/format/format.string/format.string.std/lwg3720_arg_id_width_precision_allowed_types.pass.cpp:69:3: note: in instantiation of function template specialization 'test_exception<char, int, char16_t>' requested here
      test_exception(SV("{:{}}"), 42, u'0');
      ^
    .../libcxx/test/std/utilities/format/format.string/format.string.std/lwg3720_arg_id_width_precision_allowed_types.pass.cpp:97:3: note: in instantiation of function template specialization 'test<char>' requested here
      test<char>();
      ^
    .../include/c++/v1/__format/format_arg_store.h:154:19: note: candidate function [with _Context = std::format_context, _Tp = char16_t] has been explicitly deleted
    consteval __arg_t __determine_arg_t()
                      ^
    .../include/c++/v1/__format/format_arg_store.h:148:19: note: candidate function [with _Context = std::format_context, _Tp = char16_t]
    consteval __arg_t __determine_arg_t() {

    <more errors omitted>

    .../include/c++/v1/__format/format_arg_store.h:185:22: note: initializer of '__arg' is not a constant expression
    .../include/c++/v1/__format/format_arg_store.h:167:21: note: declared here
      constexpr __arg_t __arg = __determine_arg_t<_Context, remove_cvref_t<_Tp>>();
                        ^
    .../build/include/c++/v1/__format/format_arg_store.h:194:73: error: member reference base type 'char16_t' is not a structure or union
              __arg, basic_string_view<typename _Context::char_type>{__value.data(), __value.size()}};
                                                                     ~~~~~~~^~~~~
    11 errors generated.

After the change using the same non-formmatable type gives the following
diagnostics

    .../include/c++/v1/__format/format_arg_store.h:168:3: error: static assertion failed due to requirement '__arg != __arg_t::__none': the supplied type is not formattable
      static_assert(__arg != __arg_t::__none, "the supplied type is not formattable");
      ^             ~~~~~~~~~~~~~~~~~~~~~~~~
    .../include/c++/v1/__format/format_arg_store.h:210:54: note: in instantiation of function template specialization 'std::__format::__create_format_arg<std::format_context, char16_t &>' requested here
            basic_format_arg<_Context> __arg = __format::__create_format_arg<_Context>(__args);
                                                         ^
    .../include/c++/v1/__format/format_arg_store.h:246:19: note: in instantiation of function template specialization 'std::__format::__create_packed_storage<std::format_context, int &, char16_t &>' requested here
            __format::__create_packed_storage(__storage.__types_, __storage.__values_, __args...);
                      ^
    .../include/c++/v1/__format/format_functions.h:73:10: note: in instantiation of member function 'std::__format_arg_store<std::format_context, int &, char16_t &>::__format_arg_store' requested here
      return _VSTD::__format_arg_store<_Context, _Args...>(__args...);
             ^
    .../include/c++/v1/__config:664:17: note: expanded from macro '_VSTD'
    #  define _VSTD std
                    ^
    .../libcxx/test/std/utilities/format/format.string/format.string.std/lwg3720_arg_id_width_precision_allowed_types.pass.cpp:46:50: note: in instantiation of function template specialization 'std::make_format_args<std::format_context, int &, char16_t &>' requested here
        TEST_IGNORE_NODISCARD std::vformat(fmt, std::make_format_args<context_t<CharT>>(args...));
                                                     ^
    .../libcxx/test/std/utilities/format/format.string/format.string.std/lwg3720_arg_id_width_precision_allowed_types.pass.cpp:69:3: note: in instantiation of function template specialization 'test_exception<char, int, char16_t>' requested here
      test_exception(SV("{:{}}"), 42, u'0');
      ^
    .../libcxx/test/std/utilities/format/format.string/format.string.std/lwg3720_arg_id_width_precision_allowed_types.pass.cpp:97:3: note: in instantiation of function template specialization 'test<char>' requested here
      test<char>();
      ^
    .../include/c++/v1/__format/format_arg_store.h:168:23: note: expression evaluates to '0 != 0'
      static_assert(__arg != __arg_t::__none, "the supplied type is not formattable");
                    ~~~~~~^~~~~~~~~~~~~~~~~~
    1 error generated.

Reviewed By: #libc, ldionne

Differential Revision: https://reviews.llvm.org/D144325
The file was modifiedlibcxx/include/__format/format_arg_store.h (diff)
Commit 084e4138930d84b2e76b20c4f36d832abad61696 by asb
[RISCV] Fix regression due to interaction of MachineOutliner and MachineCopyPropagation

D144535 enabled machine copy propagation for RISC-V and added it to the
pass pipeline in addPreEmitPass2 (after the MachineOutliner).
Unfortunately, the MachineCopyPropagation pass is unable to correctly
analyse outlined functions, and will delete copy instructions where a
register is set that is intended to be live-out.
RISCVInstrInfo::buildOutlinedFrame will directly insert a JALR, while a
similar function going through the normal codegen path would have a
PseudoRet with operands indicating registers that are live-out.

This patch does the simplest fix, which is to run MachineCopyPropagation
before the MachineOutliner.

Differential Revision: https://reviews.llvm.org/D146037
The file was modifiedllvm/test/CodeGen/RISCV/O3-pipeline.ll (diff)
The file was modifiedllvm/lib/Target/RISCV/RISCVTargetMachine.cpp (diff)
The file was modifiedllvm/test/CodeGen/RISCV/machine-outliner-and-machine-copy-propagation.ll (diff)