Changes

Summary

  1. [flang] Add ExternalNameConversionPass to pass pipeline (details)
  2. [fastregalloc] Add test case for self loop (D125079). (details)
  3. [mlir][scf] Implement BufferizableOpInterface for scf::WhileOp (details)
  4. [mlir][bufferize] Do not copy buffers with undefined contents (details)
  5. [flang][driver] Add support for -save-temps (details)
  6. [SimpleLoopUnswitch] Collect either logical ANDs/ORs but not both. (details)
  7. [Flang] Lower Unstructured do loops (details)
  8. [lldb] Correct hex digit regex in some tests (details)
  9. [RISCV] Enable MachineOutliner by default under -Oz for RISCV (details)
  10. [mlir][bufferize] Disallow adding new bufferizable ops during bufferization (details)
  11. [CostModel][X86] Add more complete float/double select cost test coverage (details)
  12. [DAG][PowerPC] Combine shuffle(bitcast(X), Mask) to bitcast(shuffle(X, Mask')) (details)
  13. [libc++] Mark tests that use check_assertion.h as requiring unix headers (details)
  14. [libcxx] Reject month 0 in get_date/__get_month (details)
  15. Revert "[analyzer] Canonicalize SymIntExpr so the RHS is positive when possible" (details)
  16. [pseudo] Strip directives from a token stream (details)
  17. [SLP][X86] Regenerate ssat tests to remove defunct AVX1/AVX2 checks (details)
  18. [CostModel][X86] Adjust 256-bit select costs to account for slow BLENDV op (details)
  19. Generalize "check-all" umbrella targets, use for check-clang-tools (details)
  20. [CostModel][X86] Adjust pre-SSE41 fp scalar select costs to account for vector ops (details)
  21. [libc++] Implement ranges::is_partitioned (details)
Commit f1d4cef8528eceef4d6aaaae1f99d927fd5c370d by diana.picus
[flang] Add ExternalNameConversionPass to pass pipeline

This seems to be the consensus in
https://github.com/flang-compiler/f18-llvm-project/issues/1316

The patch adds ExternalNameConversion to the default FIR CodeGen pass
pipeline, right before the FIRtoLLVM pass. It also adds a flag to
optionally disable it, and sets it in `tco`. In other words, `flang-new`
and `flang-new -fc1` will both run the pass by default, whereas `tco`
will not, so none of the tests need to be updated.

Differential Revision: https://reviews.llvm.org/D121171
The file was addedflang/test/Driver/mlir-pass-pipeline.f90
The file was modifiedflang/tools/tco/tco.cpp
The file was modifiedflang/include/flang/Tools/CLOptions.inc
The file was modifiedflang/test/Fir/basic-program.fir
The file was addedflang/test/Driver/disable-ext-name-interop.f90
Commit 54fe59ef894c7d6cb9bc09144b4123fd1c9af23a by yuanke.luo
[fastregalloc] Add test case for self loop (D125079).
The file was addedllvm/test/CodeGen/X86/fastregalloc-selfloop.mir
Commit a5d09c637261252393a015e7858efd85c9166e32 by springerm
[mlir][scf] Implement BufferizableOpInterface for scf::WhileOp

This follows the same implementation strategy as scf::ForOp and common functionality is extracted into helper functions.

This implementation works well in cases where each yielded value (from either body/condition region) is equivalent to the corresponding bbArg of the parent block. In that case, each OpResult of the loop may be aliasing with the corresponding OpOperand of the loop (and with no other OpOperand).

In the absence of said equivalence relationship, new buffer copies must be inserted, so that the aliasing OpOperand/OpResult contract of scf::WhileOp is honored. In essence, by yielding a newly allocated buffer, we can enforce the specified may-alias relationship. (Newly allocated buffers cannot alias with any OpOperands of the loop.)

Differential Revision: https://reviews.llvm.org/D124929
The file was modifiedmlir/lib/Dialect/SCF/Transforms/BufferizableOpInterfaceImpl.cpp
The file was modifiedmlir/test/Dialect/SCF/one-shot-bufferize.mlir
The file was modifiedmlir/test/Dialect/Bufferization/Transforms/one-shot-module-bufferize-invalid.mlir
Commit 988748c0774f3acc408bd65f5e57e5da6fe8aecb by springerm
[mlir][bufferize] Do not copy buffers with undefined contents

Buffers with undefined contents (e.g., the result of an init_tensor) are no longer copied.

Differential Revision: https://reviews.llvm.org/D125015
The file was modifiedmlir/include/mlir/Dialect/Bufferization/Transforms/OneShotAnalysis.h
The file was modifiedmlir/include/mlir/Dialect/Bufferization/IR/BufferizableOpInterface.h
The file was modifiedmlir/lib/Dialect/Bufferization/Transforms/OneShotAnalysis.cpp
The file was modifiedmlir/test/Dialect/Linalg/one-shot-bufferize.mlir
The file was modifiedmlir/lib/Dialect/Bufferization/IR/BufferizableOpInterface.cpp
Commit a65afce731c2fa91effcfa5d4917d6ad90a28bf0 by andrzej.warzynski
[flang][driver] Add support for -save-temps

This patch adds support for `-save-temps` in `flang-new`, Flang's
compiler driver. The semantics of this option are inherited from Clang.

The file extension for temporary Fortran preprocessed files is set to
`i`. This is identical to what Clang uses for C (or C++) preprocessed
files. I have tried researching what other compilers do here, but I
couldn't find any definitive answers. One GFortran thread [1] suggests
that indeed it is not clear what the right approach should be.

Normally, various phases in Clang/Flang are combined. The `-save-temps`
option works by forcing the compiler to run every phase separately. As
there is no integrated assembler driver in Flang, user will have to use
`-save-temps` together with `-fno-integrated-as`. Otherwise, an
invocation to the integrated assembler would be generated generated,
which is going to fail (i.e. something equivalent to `clang -cc1as` from
Clang).

There are no specific plans for implementing an integrated assembler for
Flang for now. One possible solution would be to share it entirely with
Clang.

Note that on Windows you will get the following error when using
`-fno-integrated-as`:
```bash
  flang-new: error: there is no external assembler that can be used on this platform
```
Unfortunately, I don't have access to a Windows machine to investigate
this. Instead, I marked the tests in this patch as unsupported on
Windows.

[1] https://gcc.gnu.org/bugzilla//show_bug.cgi?id=81615

Differential Revision: https://reviews.llvm.org/D124669
The file was addedflang/test/Driver/fno-integrated-as.f90
The file was modifiedclang/include/clang/Driver/Options.td
The file was addedflang/test/Driver/save-temps.f90
The file was modifiedclang/include/clang/Driver/Types.def
The file was modifiedflang/test/Driver/driver-help.f90
The file was modifiedflang/test/Driver/driver-help-hidden.f90
Commit db7a87ed4fa79a7c366438ae62d8a1088a11f29c by flo
[SimpleLoopUnswitch] Collect either logical ANDs/ORs but not both.

After D97756, collectHomogenousInstGraphLoopInvariants may collect
conditions for both logical ANDs and logical ORs in case the root is a
select that matches both logical AND & OR.

This means the function won't return invariant values of either AND/OR
chains, but both. This can result in incorrect transformations.

See llvm/test/Transforms/SimpleLoopUnswitch/trivial-unswitch-logical-and-or.ll.
Without the patch, Alive2 rejects the modified tests with:
    Source and target don't have the same return domain.

Note that this also applies to the test case added in D97756
(@test_partial_condition_unswitch_or_select). We can't unswitch on
%cond6, because the graph leading to it contains and AND and an OR.

This only fixes trivial unswitching for now, but a similar problem
likely exists with non-trivial unswitching.

Reviewed By: nikic

Differential Revision: https://reviews.llvm.org/D124526
The file was modifiedllvm/test/Transforms/SimpleLoopUnswitch/nontrivial-unswitch.ll
The file was modifiedllvm/test/Transforms/SimpleLoopUnswitch/nontrivial-unswitch-freeze.ll
The file was modifiedllvm/test/Transforms/SimpleLoopUnswitch/trivial-unswitch-freeze-individual-conditions.ll
The file was modifiedllvm/test/Transforms/SimpleLoopUnswitch/trivial-unswitch-logical-and-or.ll
The file was modifiedllvm/lib/Transforms/Scalar/SimpleLoopUnswitch.cpp
The file was modifiedllvm/test/Transforms/SimpleLoopUnswitch/nontrivial-unswitch-invariant-select-bug.ll
Commit aa0e167fab88cbef4d3f301534c86d143f2274ec by kiran.chandramohan
[Flang] Lower Unstructured do loops

The FIR `do_loop` is designed as a structured operation with a single
block inside it. Presence of unstructured constructs like jumps, exits
inside the loop will cause the loop to be marked as unstructured. These
loops are lowered using the `control-flow` dialect branch operations.

Fortran semantics do not allow the loop variable to be modified inside
the loop. To prevent accidental modification, the iteration of the
loop is modeled by two variables, trip-count and loop-variable.
-> The trip-count and loop-variable are initialized in the pre-header.
The trip-count is set as (end-start+step)/step where end, start and
step have the usual meanings. The loop-variable is initialized to start.
-> The header block contains a conditional branch instruction which
selects between branching to the body of the loop or the exit block
depending on the value of the trip-count.
-> Inside the body, the trip-count is decremented and the loop-variable
incremented by the step value. Finally it branches to the header of the
loop.

Part of the upstreaming effort to move LLVM Flang from fir-dev branch of
https://github.com/flang-compiler/f18-llvm-project to the LLVM Project.

Reviewed By: awarzynski

Differential Revision: https://reviews.llvm.org/D124837

Co-authored-by: Val Donaldson <vdonaldson@nvidia.com>
Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
Co-authored-by: Jean Perier <jperier@nvidia.com>
Co-authored-by: Peter Klausler <pklausler@nvidia.com>
The file was modifiedflang/lib/Lower/Bridge.cpp
The file was addedflang/test/Lower/do_loop_unstructured.f90
Commit 0dfafa489230061cdde39d9e7294bb61d23f1064 by david.spickett
[lldb] Correct hex digit regex in some tests

"A-f" -> "A-F"
The file was modifiedlldb/test/API/commands/memory/read/TestMemoryRead.py
The file was modifiedlldb/test/API/linux/aarch64/mte_tag_access/TestAArch64LinuxMTEMemoryTagAccess.py
Commit 4ff5e8184c665d7de6023a174fd132b20ccb8a40 by pc.wang
[RISCV] Enable MachineOutliner by default under -Oz for RISCV

Enable default outlining when the function has the minsize attribute.

`addr-label.ll` crashed after enabling this, so a barrier is added before
instruction selection as a workaround.

Reviewed By: luismarques

Differential Revision: https://reviews.llvm.org/D122213
The file was modifiedllvm/lib/Target/RISCV/RISCVInstrInfo.h
The file was modifiedllvm/lib/Target/RISCV/RISCVInstrInfo.cpp
The file was modifiedllvm/test/CodeGen/RISCV/O3-pipeline.ll
The file was modifiedllvm/lib/Target/RISCV/RISCVTargetMachine.cpp
The file was modifiedllvm/lib/Target/RISCV/CMakeLists.txt
Commit 9785eb1b98b5bf72d6613b408259bc5bda125d76 by springerm
[mlir][bufferize] Disallow adding new bufferizable ops during bufferization

Ops that are created during the bufferization were not analyzed (when run with One-Shot Bufferize), and users should instead create memref ops directly.

Futhermore, this fixes an issue where an op was erased (and put on the `erasedOps` list), but subsequently a new tensor op was created at the same memory location. This op was then not bufferized. Disallowing the creation of new tensor ops simplifies the bufferization and fixes such issues.

Differential Revision: https://reviews.llvm.org/D125017
The file was modifiedmlir/lib/Dialect/Bufferization/Transforms/Bufferize.cpp
The file was modifiedmlir/lib/Dialect/Bufferization/IR/BufferizableOpInterface.cpp
Commit 4236a10717013b00f16811fcacb538ea8dc082ea by llvm-dev
[CostModel][X86] Add more complete float/double select cost test coverage

We were only testing basic vector types
The file was modifiedllvm/test/Analysis/CostModel/X86/vselect-cost.ll
Commit 115c1888077ceff05b827a1b254d24abd6ee2b41 by david.green
[DAG][PowerPC] Combine shuffle(bitcast(X), Mask) to bitcast(shuffle(X, Mask'))

If the mask is made up of elements that form a mask in the higher type
we can convert shuffle(bitcast into the bitcast type, simplifying the
instruction sequence. A v4i32 2,3,0,1 for example can be treated as a
1,0 v2i64 shuffle. This helps clean up some of the AArch64 concat load
combines, along with helping simplify a number of other tests.

The PowerPC combine for v16i8 splat vector loads needed some fixes to
keep it working for v16i8 vectors. This improves the handling of v2i64
shuffles to match too, hopefully improving them in general.

Differential Revision: https://reviews.llvm.org/D123801
The file was modifiedllvm/test/CodeGen/PowerPC/vsx_shuffle_le.ll
The file was modifiedllvm/test/CodeGen/X86/vector-interleaved-store-i32-stride-6.ll
The file was modifiedllvm/test/CodeGen/Thumb2/mve-vld2-post.ll
The file was modifiedllvm/test/CodeGen/X86/vector-interleaved-store-i32-stride-3.ll
The file was modifiedllvm/test/CodeGen/PowerPC/canonical-merge-shuffles.ll
The file was modifiedllvm/test/CodeGen/X86/vector-interleaved-store-i32-stride-4.ll
The file was modifiedllvm/test/CodeGen/X86/vector-interleaved-store-i16-stride-4.ll
The file was modifiedllvm/test/CodeGen/X86/vector-interleaved-store-i16-stride-5.ll
The file was modifiedllvm/test/CodeGen/X86/vector-shuffle-128-v4.ll
The file was modifiedllvm/test/CodeGen/X86/vector-interleaved-store-i8-stride-3.ll
The file was modifiedllvm/test/CodeGen/X86/vector-interleaved-store-i8-stride-2.ll
The file was modifiedllvm/test/CodeGen/X86/vector-interleaved-store-i32-stride-2.ll
The file was modifiedllvm/test/CodeGen/AArch64/insert-extend.ll
The file was modifiedllvm/test/CodeGen/X86/avx-vbroadcast.ll
The file was modifiedllvm/test/CodeGen/Thumb2/mve-vld2.ll
The file was modifiedllvm/test/CodeGen/ARM/neon-copy.ll
The file was modifiedllvm/test/CodeGen/Thumb2/mve-vst4.ll
The file was modifiedllvm/test/CodeGen/X86/vector-interleaved-store-i16-stride-2.ll
The file was modifiedllvm/test/CodeGen/Thumb2/mve-shufflemov.ll
The file was modifiedllvm/test/CodeGen/PowerPC/load-and-splat.ll
The file was modifiedllvm/test/CodeGen/Thumb2/mve-vst3.ll
The file was modifiedllvm/test/CodeGen/PowerPC/aix-vsx-splatimm.ll
The file was modifiedllvm/lib/Target/PowerPC/PPCISelLowering.cpp
The file was modifiedllvm/test/CodeGen/X86/oddshuffles.ll
The file was modifiedllvm/test/CodeGen/X86/vector-interleaved-store-i16-stride-6.ll
The file was modifiedllvm/test/CodeGen/X86/vector-interleaved-store-i16-stride-3.ll
The file was modifiedllvm/test/CodeGen/ARM/vector-DAGCombine.ll
The file was modifiedllvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
The file was modifiedllvm/test/CodeGen/X86/vector-interleaved-store-i8-stride-6.ll
Commit f3a970a8255279bf519d921e3dc45354e68577ac by john.brawn
[libc++] Mark tests that use check_assertion.h as requiring unix headers

On targets without unistd.h or sys/wait.h (such as bare metal targets)
any test that uses check_assertion.h will fail, so add
REQUIRES: has-unix-headers to them and autodetect whether we have
these headers or not.

These tests currently have unsupported on windows, but that's exactly
because windows doesn't have these headers so we can remove the
specific check for windows.

Differential Revision: https://reviews.llvm.org/D124623
The file was modifiedlibcxx/test/libcxx/containers/sequences/vector/debug.iterator.compare.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.map/debug.iterator.dereference.pass.cpp
The file was modifiedlibcxx/test/libcxx/iterators/assert.next.pass.cpp
The file was modifiedlibcxx/utils/libcxx/test/features.py
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.multimap/assert.max_load_factor.pass.cpp
The file was modifiedlibcxx/test/libcxx/strings/basic.string/string.access/assert.index.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.multiset/assert.bucket_size.pass.cpp
The file was modifiedlibcxx/test/libcxx/input.output/filesystems/class.path/path.itr/assert.iterator.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.multimap/debug.iterator.dereference.pass.cpp
The file was modifiedlibcxx/test/libcxx/strings/basic.string/string.access/assert.cfront.pass.cpp
The file was modifiedlibcxx/test/libcxx/utilities/optional/optional.object/optional.object.observe/assert.op_arrow.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/sequences/array/array.zero/assert.subscript.pass.cpp
The file was modifiedlibcxx/test/libcxx/debug/containers/sequence_container_iterators.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/sequences/list/list.modifiers/debug.insert.iter_value.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/sequences/list/list.modifiers/debug.erase.iter.pass.cpp
The file was modifiedlibcxx/test/libcxx/strings/basic.string/string.iterators/debug.iterator.dereference.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.multimap/unord.multimap.modifiers/debug.erase.iter_iter.pass.cpp
The file was modifiedlibcxx/test/libcxx/strings/basic.string/string.iterators/debug.iterator.subtract.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.set/debug.local_iterator.increment.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.multimap/debug.insert.hint_const_lvalue.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.set/debug.iterator.increment.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/sequences/vector/debug.iterator.dereference.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.multimap/assert.bucket.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/sequences/vector/debug.iterator.subtract.pass.cpp
The file was modifiedlibcxx/test/libcxx/debug/containers/unord_containers.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.map/debug.swap.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.set/assert.bucket.pass.cpp
The file was modifiedlibcxx/test/libcxx/strings/basic.string/string.access/assert.cindex.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.multimap/debug.iterator.increment.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.map/assert.max_load_factor.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.set/assert.max_load_factor.pass.cpp
The file was modifiedlibcxx/test/libcxx/strings/string.view/assert.ctor.pointer.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.map/assert.bucket_size.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/sequences/list/list.ops/debug.splice.pos_list_iter_iter.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.multimap/debug.insert.hint_rvalue.pass.cpp
The file was modifiedlibcxx/test/libcxx/algorithms/debug_less.inconsistent.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/sequences/vector/assert.cindex.oob.pass.cpp
The file was modifiedlibcxx/test/libcxx/strings/basic.string/string.iterators/debug.iterator.compare.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.multimap/debug.local_iterator.dereference.pass.cpp
The file was modifiedlibcxx/test/libcxx/thread/futures/futures.promise/assert.set_exception.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/sequences/vector/assert.cback.empty.pass.cpp
The file was modifiedlibcxx/test/libcxx/strings/basic.string/string.modifiers/debug.insert.iter_char.pass.cpp
The file was modifiedlibcxx/test/libcxx/algorithms/debug_less.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.set/debug.erase.iter.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.multimap/assert.bucket_size.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/sequences/vector/assert.pop_back.empty.pass.cpp
The file was modifiedlibcxx/test/libcxx/ranges/range.adaptors/range.lazy.split/range.lazy.split.outer/assert.equal.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/sequences/vector/assert.front.empty.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.multiset/debug.local_iterator.increment.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/sequences/array/array.zero/assert.front.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/sequences/list/list.modifiers/debug.insert.iter_rvalue.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.map/debug.insert.hint_rvalue.pass.cpp
The file was modifiedlibcxx/test/libcxx/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/assert.deallocate.pass.cpp
The file was modifiedlibcxx/test/libcxx/strings/basic.string/string.iterators/debug.iterator.add.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/sequences/list/list.ops/debug.splice.pos_list_iter.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/sequences/vector/debug.iterator.index.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.multiset/debug.iterator.dereference.pass.cpp
The file was modifiedlibcxx/test/libcxx/ranges/range.adaptors/range.lazy.split/range.lazy.split.inner/assert.equal.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/sequences/vector/debug.iterator.decrement.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.set/debug.local_iterator.dereference.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.set/debug.swap.pass.cpp
The file was modifiedlibcxx/test/libcxx/strings/basic.string/string.modifiers/assert.erase_iter.null.pass.cpp
The file was modifiedlibcxx/test/libcxx/debug/containers/associative_containers.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/sequences/list/list.modifiers/debug.insert.iter_size_value.pass.cpp
The file was modifiedlibcxx/test/libcxx/strings/basic.string/string.modifiers/debug.insert.iter_iter_iter.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.multimap/debug.swap.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.map/assert.bucket.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/sequences/list/list.modifiers/assert.erase_iter.end.pass.cpp
The file was modifiedlibcxx/test/libcxx/strings/basic.string/string.iterators/debug.iterator.index.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/sequences/vector/assert.cfront.empty.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.map/unord.map.modifiers/debug.erase.iter.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/sequences/vector/assert.back.empty.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/sequences/vector/debug.iterator.add.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.set/debug.insert.hint_const_lvalue.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.map/debug.iterator.increment.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.multimap/unord.multimap.modifiers/debug.erase.iter.pass.cpp
The file was modifiedlibcxx/test/libcxx/strings/basic.string/string.access/assert.back.pass.cpp
The file was modifiedlibcxx/test/support/test.support/test_check_assertion.pass.cpp
The file was modifiedlibcxx/test/libcxx/thread/futures/futures.promise/assert.set_exception_at_thread_exit.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.multiset/assert.bucket.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.multiset/debug.swap.pass.cpp
The file was modifiedlibcxx/test/libcxx/strings/basic.string/string.modifiers/debug.erase.iter.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.multiset/assert.max_load_factor.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.map/debug.local_iterator.dereference.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.map/debug.local_iterator.increment.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.multiset/debug.erase.iter.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.set/debug.erase.iter_iter.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.multiset/debug.erase.iter_iter.pass.cpp
The file was modifiedlibcxx/test/libcxx/iterators/assert.prev.pass.cpp
The file was modifiedlibcxx/test/libcxx/strings/basic.string/string.iterators/debug.iterator.increment.pass.cpp
The file was modifiedlibcxx/test/libcxx/algorithms/alg.sorting/assert.min.max.pass.cpp
The file was modifiedlibcxx/test/libcxx/iterators/assert.advance.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/sequences/list/list.modifiers/assert.pop_back.empty.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/sequences/list/list.modifiers/debug.erase.iter_iter.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.multiset/debug.iterator.increment.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.multiset/debug.insert.hint_const_lvalue.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/sequences/array/array.zero/assert.back.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/sequences/vector/debug.iterator.increment.pass.cpp
The file was modifiedlibcxx/test/libcxx/strings/basic.string/string.access/assert.front.pass.cpp
The file was modifiedlibcxx/test/libcxx/strings/basic.string/string.access/assert.cback.pass.cpp
The file was modifiedlibcxx/test/libcxx/experimental/memory/memory.resource.adaptor/memory.resource.adaptor.mem/assert.deallocate.pass.cpp
The file was modifiedlibcxx/test/libcxx/strings/basic.string/string.modifiers/debug.insert.iter_size_char.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.map/debug.insert.hint_const_lvalue.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.multiset/debug.local_iterator.dereference.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.set/debug.iterator.dereference.pass.cpp
The file was modifiedlibcxx/test/libcxx/utilities/optional/optional.object/optional.object.observe/assert.dereference.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/sequences/list/list.ops/debug.splice.pos_list.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/sequences/list/list.cons/debug.copy.pass.cpp
The file was modifiedlibcxx/test/libcxx/strings/basic.string/string.iterators/debug.iterator.decrement.pass.cpp
The file was modifiedlibcxx/test/libcxx/strings/basic.string/string.modifiers/assert.pop_back.pass.cpp
The file was modifiedlibcxx/test/libcxx/debug/containers/string.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/sequences/list/list.modifiers/debug.insert.iter_iter_iter.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/sequences/list/list.modifiers/debug.emplace.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/sequences/deque/assert.pop_back.empty.pass.cpp
The file was modifiedlibcxx/test/libcxx/strings/basic.string/string.modifiers/debug.erase.iter_iter.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.multimap/debug.local_iterator.increment.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/sequences/vector/assert.index.oob.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.map/unord.map.modifiers/debug.erase.iter_iter.pass.cpp
The file was modifiedlibcxx/test/libcxx/containers/unord/unord.set/assert.bucket_size.pass.cpp
Commit ab07d06e7b864029620927790dfb23b6a5900e13 by david.spickett
[libcxx] Reject month 0 in get_date/__get_month

[libcxx] Reject month 0 in get_date/__get_month

This fixes #47663.

Months in dates should be >= 1 and <= 12.
We parse up to two digits then minus one, because
we want to store this as "months since January"
(0-11).

However we didn't check that the result of that
was not -1. For example if you had (MM/DD/YYYY)
00/21/2022.

Added tests for:
* Failing if month is 0
* Failing if month is 13
* Allowing a leading zero in month e.g. "01"

Note that libc++ and libstdc++ return different
values on parsing failure, and MSVC STL returns
end of stream instead.

Handle the first two by checking for defines, MSVC STL
expects these tests to fail for other reasons already:
https://github.com/microsoft/STL/blob/main/tests/libcxx/expected_results.txt#L372
so not handling that case here.

Reviewed By: #libc, Mordante

Differential Revision: https://reviews.llvm.org/D124175
The file was modifiedlibcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_date.pass.cpp
The file was modifiedlibcxx/include/locale
Commit da5b5ae852c45236620e1dd8d498b2c49fa5c855 by balazs.benics
Revert "[analyzer] Canonicalize SymIntExpr so the RHS is positive when possible"

It seems like multiple users are affected by a crash introduced by this
commit, thus I'm reverting it for the time being.
Read more about the found reproducers at Phabricator.

Differential Revision: https://reviews.llvm.org/D124658

This reverts commit f0d6cb4a5cf5723d7ddab2c7dab74f2f62116a6d.
The file was removedclang/test/Analysis/additive-op-on-sym-int-expr.c
The file was modifiedclang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp
The file was modifiedclang/test/Analysis/expr-inspection.c
Commit 7dc3c6190ec7191dd104fa5158fe0ee32e9b0c49 by sam.mccall
[pseudo] Strip directives from a token stream

This includes only the taken branch of conditional sections.
The API allows for producing a stream for a particular PP branch, which
will be used later for the secondary GLR parses of not-taken branches.

Differential Revision: https://reviews.llvm.org/D123243
The file was modifiedclang-tools-extra/pseudo/unittests/DirectiveTreeTest.cpp
The file was modifiedclang-tools-extra/pseudo/test/lex.c
The file was modifiedclang-tools-extra/pseudo/include/clang-pseudo/DirectiveTree.h
The file was addedclang-tools-extra/pseudo/test/strip-directives.c
The file was modifiedclang-tools-extra/pseudo/lib/DirectiveTree.cpp
The file was modifiedclang-tools-extra/pseudo/tool/ClangPseudo.cpp
Commit f22e993e4e6128e7daa51f06008488d8339dc044 by llvm-dev
[SLP][X86] Regenerate ssat tests to remove defunct AVX1/AVX2 checks
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/arith-sub-ssat.ll
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/arith-add-ssat.ll
Commit f0e8c1d6d99ef686fd381c6af4debc7470876681 by llvm-dev
[CostModel][X86] Adjust 256-bit select costs to account for slow BLENDV op

Based off the script from D103695, on AVX1, Jaguar/Bulldozer both have low throughput for ymm select patterns (BLENDV + OR(AND,ANDN))), and even on AVX2 Haswell still struggles with BLENDV ops
The file was modifiedllvm/test/Analysis/CostModel/X86/arith-sminmax.ll
The file was modifiedllvm/test/Analysis/CostModel/X86/arith-usat.ll
The file was modifiedllvm/test/Analysis/CostModel/X86/reduce-smax.ll
The file was modifiedllvm/test/Analysis/CostModel/X86/reduce-umax.ll
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/arith-add-ssat.ll
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/arith-sub-ssat.ll
The file was modifiedllvm/test/Analysis/CostModel/X86/fptoi_sat.ll
The file was modifiedllvm/test/Analysis/CostModel/X86/arith-ssat.ll
The file was modifiedllvm/test/Analysis/CostModel/X86/fshr.ll
The file was modifiedllvm/lib/Target/X86/X86TargetTransformInfo.cpp
The file was modifiedllvm/test/Analysis/CostModel/X86/reduce-smin.ll
The file was modifiedllvm/test/Analysis/CostModel/X86/vselect-cost.ll
The file was modifiedllvm/test/Analysis/CostModel/X86/reduce-umin.ll
The file was modifiedllvm/test/Analysis/CostModel/X86/arith-uminmax.ll
The file was modifiedllvm/test/Analysis/CostModel/X86/fshl.ll
Commit 7cc8377f2c572a919ecb2d22b2039acf3e6b745a by sam.mccall
Generalize "check-all" umbrella targets, use for check-clang-tools

The mechanism behind "check-all" is recording params of add_lit_testsuite()
calls in global variables LLVM_LIT_*, and then creating an extra suite with
their union at the end.
This avoids composing the check-* targets directly, which doesn't work well.

We generalize this by allowing multiple families of variables LLVM_{name}_LIT_*:
  umbrella_lit_testsuite_begin(check-foo)
  ... test suites here will be added to LLVM_FOO_LIT_* variables ...
  umbrella_lit_testsuite_end(check-foo)
(This also moves some implementation muck out of {llvm,clang}/CMakeLists.txt

This patch also changes check-clang-tools to use be an umbrella test target,
which means the clangd and clang-pseudo tests are included in it, along with the
the other testsuites that already are (like check-clang-extra-clang-tidy).

Differential Revision: https://reviews.llvm.org/D121838
The file was modifiedruntimes/CMakeLists.txt
The file was modifiedruntimes/Tests.cmake.in
The file was modifiedclang-tools-extra/test/CMakeLists.txt
The file was modifiedclang/CMakeLists.txt
The file was modifiedcompiler-rt/test/CMakeLists.txt
The file was modifiedllvm/cmake/modules/AddLLVM.cmake
The file was modifiedclang-tools-extra/CMakeLists.txt
The file was modifiedllvm/runtimes/CMakeLists.txt
The file was modifiedllvm/CMakeLists.txt
The file was modifiedclang/bindings/python/tests/CMakeLists.txt
The file was modifiedclang/runtime/CMakeLists.txt
Commit d21bf514940fd3b6368796e3ad22e1910c8598c6 by llvm-dev
[CostModel][X86] Adjust pre-SSE41 fp scalar select costs to account for vector ops

Based off the script from D103695, we now mainly use BLENDV or OR(AND,ANDN) to select scalar float/double ops
The file was modifiedllvm/test/Analysis/CostModel/X86/vselect-cost.ll
The file was modifiedllvm/lib/Target/X86/X86TargetTransformInfo.cpp
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/crash_cmpop.ll
Commit 37ba1b9d1ac729b1b05f11b684d352ec34646379 by nikolasklauser
[libc++] Implement ranges::is_partitioned

Reviewed By: var-const, #libc

Spies: libcxx-commits, mgorny

Differential Revision: https://reviews.llvm.org/D124440
The file was addedlibcxx/test/std/algorithms/alg.sorting/alg.partitions/ranges.is_partitioned.pass.cpp
The file was modifiedlibcxx/docs/Status/RangesAlgorithms.csv
The file was modifiedlibcxx/include/CMakeLists.txt
The file was addedlibcxx/include/__algorithm/ranges_is_partitioned.h
The file was modifiedlibcxx/include/module.modulemap
The file was modifiedlibcxx/include/algorithm
The file was modifiedlibcxx/test/libcxx/private_headers.verify.cpp