Changes

Summary

  1. [RISCV] Decode vtype with reserved fields to raw immediate (details)
  2. [ELF] Move ObjFile<ELFT>::{getLocalSymbols,getGlobalSymbols} to non-template ELFFileBase. NFC (details)
  3. [mlir][OpDSL] Fix OpDSL tests after https://reviews.llvm.org/D114680. (details)
  4. [mlir] Move bufferization-related passes to `bufferization` dialect. (details)
  5. [clangd] Make std symbol generation script python3 friendly (details)
  6. [mlir] Decompose Bufferization Clone operation into Memref Alloc and Copy. (details)
  7. [clang][ARM] PACBTI-M assembly support (details)
  8. [AMDGPU] Update docs for nontemporal store (details)
  9. [GlobalISel] Add matchers for constant splat. (details)
  10. [lldb] Remove 'extern "C"' from the lldb-swig-python interface (details)
  11. [Analyzer][solver] Do not remove the simplified symbol from the eq class (details)
  12. [Analyzer][Core] Make SValBuilder to better simplify svals with 3 symbols in the tree (details)
  13. [LV] Move code from widenSelectInstruction to VPWidenSelectRecipe. (NFC) (details)
  14. [DebugInfo][InstrRef] "final final" test cleanups for x86 tests (details)
  15. [libc] Add memmove benchmarks (details)
  16. [libc] Add a reasonably optimized version for bcmp (details)
  17. [libc++][ABI BREAK] Do not use the C++03 emulation for std::nullptr_t by default (details)
  18. [DAG] Create fptosi.sat from clamped fptosi (details)
  19. [DebugInfo][InstrRef] Avoid dropping fragment info during PHI elimination (details)
  20. [AMDGPU][NFC] Remove unused defvar in AMDGPUInstructions.td. (details)
  21. [DebugInfo][InstrRef][X86] Instrument expanded DYN_ALLOCAs (details)
  22. [mlir] Fix BufferizationToMemRef build. (details)
  23. [mlir] Add bazel build for BufferizationToMemRef. (details)
  24. [DebugInfo][InstrRef] Pre-land on-by-default-for-x86 changes (details)
  25. [fir] Add array value copy pass (details)
  26. [gn build] (semimanually) port 25a7e4b9f7c6 (details)
  27. [lldb] Inline Platform::LoadCachedExecutable into its (single) caller (details)
  28. [lldb] Introduce PlatformQemuUser (details)
  29. [X86] Add mulh test coverage for extension to illegal type (details)
  30. [DebugInfo] Turn instruction referencing on by default for x86 (details)
  31. [BuildLibCalls] Add memset_chk test. (details)
  32. [DSE] Add memset_chk tests. (details)
  33. Test commit (details)
  34. Revert "[DAG] Create fptosi.sat from clamped fptosi" (details)
  35. [clang][dataflow] Add base types for building dataflow analyses (details)
  36. [MC][ELF] Fix accepting abbreviated form with Type change (details)
  37. [fir] Add fir reduction builder (details)
  38. [lld-macho] Mark dylib symbols coming from -weak_framework as weak-ref. (details)
  39. [mlir][linalg] Run CSE after every CodegenStrategy transformation. (details)
  40. [OpenMP] Add RTL function to externalization RAII (details)
  41. [mlir][linalg] Fix windows build issue in hoist padding. (details)
  42. [DAG] Create fptosi.sat from clamped fptosi (details)
  43. [mlir][linalg] Use top down traversal for padding. (details)
  44. [clang][dataflow] Fix broken build in ClangStaticAnalyzer (details)
  45. [mlir][linalg] Support the empty anchor op string when padding. (details)
  46. [DSE] Use optimized access if available for redundant store elimination. (details)
  47. Use VersionTuple for parsing versions in Triple. This makes it possible to distinguish between "16" and "16.0" after parsing, which previously was not possible. (details)
  48. [mlir][linalg] Adapt the decompose patterns to use a filter (NFC). (details)
  49. [mlir][linalg] Add decompose to CodegenStrategy. (details)
Commit 29d4230d6b528ebf14dcd5dc610ee0d937a23d51 by powerman1st
[RISCV] Decode vtype with reserved fields to raw immediate

This patch fixes a crash when doing "llvm-objdump -D --mattr=+experimental-v"
against an object file which happens to keep a word that can be decoded to
VSETVLI & VSETIVLI with reserved vlmul[2:0]=4. All vtype values with
reserved fields (vlmul[2:0]=4, vsew[2:0]=0b1xx, non-zero bits 8/9/10) are
printed to raw immediate.

Reviewed By: jhenderson, jrtc27, craig.topper

Differential Revision: https://reviews.llvm.org/D114581
The file was modifiedllvm/lib/Target/RISCV/MCTargetDesc/RISCVInstPrinter.cpp (diff)
The file was addedllvm/test/MC/RISCV/rvv/vsetvl-invalid.s
Commit 5188f55d32a9cd95c3cb668ab2d762ca4e0c8d6b by i
[ELF] Move ObjFile<ELFT>::{getLocalSymbols,getGlobalSymbols} to non-template ELFFileBase. NFC
The file was modifiedlld/ELF/InputFiles.cpp (diff)
The file was modifiedlld/ELF/InputFiles.h (diff)
Commit 0d0371f58ff0e4289bdff9ef70f7f6fb0277c3d0 by gysit
[mlir][OpDSL] Fix OpDSL tests after https://reviews.llvm.org/D114680.

Update the shapes of the convolution / pooling tests that where detected after enabling verification during printing (https://reviews.llvm.org/D114680). Also split the emit_structured_generic.py file that previously contained all tests into multiple separate files to simplify debugging.

Reviewed By: stellaraccident

Differential Revision: https://reviews.llvm.org/D114731
The file was addedmlir/test/python/dialects/linalg/opdsl/emit_misc.py
The file was removedmlir/test/python/dialects/linalg/opdsl/emit_structured_generic.py
The file was addedmlir/test/python/dialects/linalg/opdsl/emit_matmul.py
The file was addedmlir/test/python/dialects/linalg/opdsl/emit_convolution.py
The file was addedmlir/test/python/dialects/linalg/opdsl/emit_pooling.py
Commit f89bb3c012b46a00eb31bb7a705a85993eb763e3 by pifon
[mlir] Move bufferization-related passes to `bufferization` dialect.

[RFC](https://llvm.discourse.group/t/rfc-dialect-for-bufferization-related-ops/4712)

Differential Revision: https://reviews.llvm.org/D114698
The file was modifiedmlir/lib/Dialect/StandardOps/Transforms/Bufferize.cpp (diff)
The file was modifiedmlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h (diff)
The file was modifiedmlir/include/mlir/Dialect/Arithmetic/Transforms/Passes.h (diff)
The file was addedmlir/include/mlir/Dialect/Bufferization/Transforms/Passes.td
The file was modifiedmlir/include/mlir/Transforms/Passes.td (diff)
The file was modifiedmlir/lib/Dialect/Linalg/Transforms/Bufferize.cpp (diff)
The file was modifiedmlir/lib/Dialect/Math/Transforms/PolynomialApproximation.cpp (diff)
The file was removedmlir/lib/Transforms/BufferDeallocation.cpp
The file was modifiedmlir/lib/Dialect/StandardOps/Transforms/ExpandOps.cpp (diff)
The file was modifiedmlir/include/mlir/InitAllPasses.h (diff)
The file was addedmlir/lib/Dialect/Bufferization/Transforms/BufferDeallocation.cpp
The file was removedmlir/lib/Transforms/Bufferize.cpp
The file was addedmlir/test/Dialect/Bufferization/Transforms/buffer-deallocation.mlir
The file was modifiedmlir/lib/Dialect/Arithmetic/Transforms/Bufferize.cpp (diff)
The file was addedmlir/test/Dialect/Bufferization/Transforms/finalizing-bufferize.mlir
The file was modifiedmlir/lib/Transforms/CMakeLists.txt (diff)
The file was addedmlir/include/mlir/Dialect/Bufferization/Transforms/Bufferize.h
The file was modifiedmlir/lib/Dialect/Linalg/Transforms/Promotion.cpp (diff)
The file was removedmlir/include/mlir/Transforms/Bufferize.h
The file was modifiedmlir/lib/Transforms/PassDetail.h (diff)
The file was modifiedmlir/lib/Dialect/Arithmetic/Transforms/CMakeLists.txt (diff)
The file was modifiedmlir/lib/Dialect/StandardOps/Transforms/TensorConstantBufferize.cpp (diff)
The file was modifiedmlir/include/mlir/Dialect/Bufferization/CMakeLists.txt (diff)
The file was addedmlir/include/mlir/Dialect/Bufferization/Transforms/CMakeLists.txt
The file was addedmlir/lib/Dialect/Bufferization/Transforms/CMakeLists.txt
The file was addedmlir/include/mlir/Dialect/Bufferization/Transforms/Passes.h
The file was removedmlir/test/Transforms/finalizing-bufferize.mlir
The file was modifiedmlir/lib/Dialect/StandardOps/Transforms/CMakeLists.txt (diff)
The file was modifiedmlir/lib/Dialect/SCF/Transforms/CMakeLists.txt (diff)
The file was modifiedmlir/lib/Dialect/Bufferization/CMakeLists.txt (diff)
The file was modifiedmlir/lib/Dialect/Shape/Transforms/CMakeLists.txt (diff)
The file was modifiedmlir/lib/Dialect/Arithmetic/Transforms/ExpandOps.cpp (diff)
The file was modifiedmlir/lib/Dialect/Tensor/Transforms/Bufferize.cpp (diff)
The file was modifiedmlir/include/mlir/Dialect/StandardOps/Transforms/Passes.h (diff)
The file was modifiedmlir/lib/Dialect/Tensor/Transforms/CMakeLists.txt (diff)
The file was modifiedmlir/lib/Dialect/SCF/Transforms/Bufferize.cpp (diff)
The file was modifiedmlir/lib/Dialect/Shape/Transforms/Bufferize.cpp (diff)
The file was modifiedmlir/include/mlir/Dialect/Tensor/Transforms/Passes.h (diff)
The file was modifiedmlir/include/mlir/Transforms/Passes.h (diff)
The file was modifiedmlir/lib/Dialect/StandardOps/Transforms/FuncBufferize.cpp (diff)
The file was addedmlir/lib/Dialect/Bufferization/Transforms/Bufferize.cpp
The file was removedmlir/test/Transforms/buffer-deallocation.mlir
The file was addedmlir/lib/Dialect/Bufferization/Transforms/PassDetail.h
The file was modifiedutils/bazel/llvm-project-overlay/mlir/BUILD.bazel (diff)
Commit 3356d8837e46a92446e4b9b0cbd6967e5f4e44ba by kadircet
[clangd] Make std symbol generation script python3 friendly

Differential Revision: https://reviews.llvm.org/D114723
The file was modifiedclang-tools-extra/clangd/include-mapping/gen_std.py (diff)
Commit ae1ea0bead75f4c7a4c965dfa40b5f3b78b60364 by julian.gross
[mlir] Decompose Bufferization Clone operation into Memref Alloc and Copy.

This patch introduces a new conversion to convert bufferization.clone operations
into a memref.alloc and a memref.copy operation. This transformation is needed to
transform all remaining clones which "survive" all previous transformations, before
a given program is lowered further (to LLVM e.g.). Otherwise, these operations
cannot be handled anymore and lead to compile errors.
See: https://llvm.discourse.group/t/bufferization-error-related-to-memref-clone/4665

Differential Revision: https://reviews.llvm.org/D114233
The file was addedmlir/test/Conversion/BufferizationToMemRef/bufferization-to-memref.mlir
The file was modifiedmlir/include/mlir/Conversion/Passes.td (diff)
The file was addedmlir/include/mlir/Conversion/BufferizationToMemRef/BufferizationToMemRef.h
The file was addedmlir/lib/Conversion/BufferizationToMemRef/BufferizationToMemRef.cpp
The file was modifiedmlir/include/mlir/Conversion/Passes.h (diff)
The file was modifiedmlir/lib/Conversion/CMakeLists.txt (diff)
The file was addedmlir/lib/Conversion/BufferizationToMemRef/CMakeLists.txt
Commit 5cff77c23f43130887b566dd0fe237e1c482e23b by zeno
[clang][ARM] PACBTI-M assembly support

Introduce assembly support for Armv8.1-M PACBTI extension. This is an optional
extension in v8.1-M.

There are 10 new system registers and 5 new instructions, all predicated on the
feature.

The attribute for llvm-mc is called "pacbti". For armclang, an architecture
extension also called "pacbti" was created.

This patch is part of a series that adds support for the PACBTI-M extension of
the Armv8.1-M architecture, as detailed here:

https://community.arm.com/arm-community-blogs/b/architectures-and-processors-blog/posts/armv8-1-m-pointer-authentication-and-branch-target-identification-extension

The PACBTI-M specification can be found in the Armv8-M Architecture Reference
Manual:

https://developer.arm.com/documentation/ddi0553/latest

The following people contributed to this patch:

- Victor Campos
- Ties Stuij

Reviewed By: labrinea

Differential Revision: https://reviews.llvm.org/D112420
The file was modifiedllvm/lib/Target/ARM/ARMSystemRegister.td (diff)
The file was modifiedclang/test/Driver/armv8.1m.main.c (diff)
The file was modifiedllvm/include/llvm/Support/ARMTargetParser.def (diff)
The file was modifiedllvm/include/llvm/Support/ARMTargetParser.h (diff)
The file was modifiedllvm/lib/Target/ARM/ARMPredicates.td (diff)
The file was addedllvm/test/MC/ARM/implicit-it-generation-v8.s
The file was modifiedllvm/lib/Target/ARM/ARMSubtarget.h (diff)
The file was modifiedllvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp (diff)
The file was modifiedllvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp (diff)
The file was addedllvm/test/MC/ARM/armv8.1m-pacbti.s
The file was addedllvm/test/MC/Disassembler/ARM/armv8.1m-pacbti.txt
The file was modifiedllvm/lib/Target/ARM/ARM.td (diff)
The file was modifiedllvm/test/CodeGen/Thumb/high-reg-clobber.mir (diff)
The file was modifiedllvm/lib/Target/ARM/ARMInstrThumb2.td (diff)
The file was modifiedllvm/lib/Target/ARM/ARMRegisterInfo.td (diff)
The file was addedllvm/test/MC/ARM/armv8.1m-pacbti-error.s
Commit 5d602120c3a3c175f606d6ce599cfb60239d904c by jay.foad
[AMDGPU] Update docs for nontemporal store

Update the documented GFX10 code sequence for nontemporal stores after
D114351.

Differential Revision: https://reviews.llvm.org/D114707
The file was modifiedllvm/docs/AMDGPUUsage.rst (diff)
Commit bc5dbb0baee357649c3132254ca6766b5cd6f15b by abinav.puthanpurayil
[GlobalISel] Add matchers for constant splat.

This change exposes isBuildVectorConstantSplat() to the llvm namespace
and uses it to implement the constant splat versions of
m_SpecificICst().

CombinerHelper::matchOrShiftToFunnelShift() can now work with vector
types and CombinerHelper::matchMulOBy2()'s match for a constant splat is
simplified.

Differential Revision: https://reviews.llvm.org/D114625
The file was modifiedllvm/test/CodeGen/AMDGPU/GlobalISel/combine-rot.mir (diff)
The file was modifiedllvm/lib/CodeGen/GlobalISel/Utils.cpp (diff)
The file was modifiedllvm/unittests/CodeGen/GlobalISel/PatternMatchTest.cpp (diff)
The file was modifiedllvm/test/CodeGen/AMDGPU/GlobalISel/combine-fsh.mir (diff)
The file was modifiedllvm/include/llvm/CodeGen/GlobalISel/Utils.h (diff)
The file was modifiedllvm/include/llvm/CodeGen/GlobalISel/MIPatternMatch.h (diff)
The file was modifiedllvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp (diff)
Commit 9a14adeae00015798843ff5cad987e5fdbdddb34 by pavel
[lldb] Remove 'extern "C"' from the lldb-swig-python interface

The LLDBSWIGPython functions had (at least) two problems:
- There wasn't a single source of truth (a header file) for the
  prototypes of these functions. This meant that subtle differences
  in copies of function declarations could go by undetected. And
  not-so-subtle differences would result in strange runtime failures.
- All of the declarations had to have an extern "C" interface, because
  the function definitions were being placed inside and extert "C" block
  generated by swig.

This patch fixes both problems by moving the function definitions to the
%header block of the swig files. This block is not surrounded by extern
"C", and seems more appropriate anyway, as swig docs say it is meant for
"user-defined support code" (whereas the previous %wrapper code was for
automatically-generated wrappers).

It also puts the declarations into the SWIGPythonBridge header file
(which seems to have been created for this purpose), and ensures it is
included by all code wishing to define or use these functions. This
means that any differences in the declaration become a compiler error
instead of a runtime failure.

Differential Revision: https://reviews.llvm.org/D114369
The file was modifiedlldb/source/Plugins/ScriptInterpreter/Python/SWIGPythonBridge.h (diff)
The file was modifiedlldb/bindings/python/python.swig (diff)
The file was modifiedlldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp (diff)
The file was modifiedlldb/unittests/ScriptInterpreter/Python/PythonTestSuite.cpp (diff)
The file was modifiedlldb/bindings/python/python-wrapper.swig (diff)
Commit f02c5f3478318075d1a469203900e452ba651421 by gabor.marton
[Analyzer][solver] Do not remove the simplified symbol from the eq class

Currently, during symbol simplification we remove the original member symbol
from the equivalence class (`ClassMembers` trait). However, we keep the
reverse link (`ClassMap` trait), in order to be able the query the
related constraints even for the old member. This asymmetry can lead to
a problem when we merge equivalence classes:
```
ClassA: [a, b]   // ClassMembers trait,
a->a, b->a       // ClassMap trait, a is the representative symbol
```
Now lets delete `a`:
```
ClassA: [b]
a->a, b->a
```
Let's merge the trivial class `c` into ClassA:
```
ClassA: [c, b]
c->c, b->c, a->a
```
Now after the merge operation, `c` and `a` are actually in different
equivalence classes, which is inconsistent.

One solution to this problem is to simply avoid removing the original
member and this is what this patch does.

Other options I have considered:
1) Always merge the trivial class into the non-trivial class. This might
   work most of the time, however, will fail if we have to merge two
   non-trivial classes (in that case we no longer can track equivalences
   precisely).
2) In `removeMember`, update the reverse link as well. This would cease
   the inconsistency, but we'd loose precision since we could not query
   the constraints for the removed member.

Differential Revision: https://reviews.llvm.org/D114619
The file was modifiedclang/test/Analysis/symbol-simplification-fixpoint-one-iteration.cpp (diff)
The file was modifiedclang/test/Analysis/symbol-simplification-disequality-info.cpp (diff)
The file was modifiedclang/test/Analysis/expr-inspection-printState-eq-classes.c (diff)
The file was modifiedclang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp (diff)
The file was modifiedclang/test/Analysis/symbol-simplification-fixpoint-two-iterations.cpp (diff)
Commit 0a17896fe6fdbbde1f9d3ffbb10a4f3bfa8960f9 by gabor.marton
[Analyzer][Core] Make SValBuilder to better simplify svals with 3 symbols in the tree

Add the capability to simplify more complex constraints where there are 3
symbols in the tree. In this change I extend simplifySVal to query constraints
of children sub-symbols in a symbol tree. (The constraint for the parent is
asked in getKnownValue.)

Differential Revision: https://reviews.llvm.org/D103317
The file was modifiedclang/test/Analysis/taint-tester.c (diff)
The file was modifiedclang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp (diff)
The file was addedclang/test/Analysis/svalbuilder-simplify-compound-svals.cpp
Commit dab776dd0fb43f1c940998cfb64ddfe3cc87ae6f by flo
[LV] Move code from widenSelectInstruction to VPWidenSelectRecipe. (NFC)

The code in widenSelectInstruction has already been transitioned
to only rely on information provided by VPWidenSelectRecipe directly.

Moving the code directly to VPWidenSelectRecipe::execute completes
the transition for the recipe.

It provides the following advantages:

1. Less indirection, easier to see what's going on.
2. Removes accesses to fields of ILV.

2) in particular ensures that no dependencies on
fields in ILV for vector code generation are re-introduced.

Reviewed By: Ayal

Differential Revision: https://reviews.llvm.org/D114323
The file was modifiedllvm/lib/Transforms/Vectorize/LoopVectorize.cpp (diff)
Commit a48e05030bbd0d9ac6f49da43b5f34d317b5a520 by jeremy.morse
[DebugInfo][InstrRef] "final final" test cleanups for x86 tests

Two "totally definitely the last ones" instruction referencing test
updates:

* fp-stack.ll: this test targets i686, and so it won't be getting
   instruction referencing, or at least not right now,
* X86/live-debug-values.ll: instruction referencing will produce entry
   values in this test, add check lines to account for this. It's not clear
   what the test is supposed to be testing anyway, but the entry values
   appear to be correct.

Differential Revision: https://reviews.llvm.org/D114626
The file was modifiedllvm/test/DebugInfo/COFF/fp-stack.ll (diff)
The file was modifiedllvm/test/DebugInfo/X86/live-debug-values.ll (diff)
Commit de21f346913cf777436ab0ac0fb707ac04eb3300 by gchatelet
[libc] Add memmove benchmarks

This patch enables the benchmarking of `memmove`.
Ideally, this should be submitted before D114637.

Differential Revision: https://reviews.llvm.org/D114694
The file was modifiedlibc/benchmarks/CMakeLists.txt (diff)
The file was modifiedlibc/benchmarks/LibcMemoryBenchmark.cpp (diff)
The file was modifiedlibc/benchmarks/LibcMemoryBenchmarkMain.cpp (diff)
The file was modifiedlibc/src/string/CMakeLists.txt (diff)
The file was modifiedlibc/benchmarks/automemcpy/lib/CodeGen.cpp (diff)
The file was modifiedlibc/benchmarks/LibcMemoryBenchmark.h (diff)
The file was modifiedlibc/benchmarks/LibcDefaultImplementations.cpp (diff)
The file was modifiedlibc/benchmarks/LibcFunctionPrototypes.h (diff)
The file was modifiedlibc/benchmarks/LibcMemoryGoogleBenchmarkMain.cpp (diff)
Commit af059dfef5a766ceb0ac29318dfb7102131d933e by gchatelet
[libc] Add a reasonably optimized version for bcmp

This is based on current memcmp implementation.

Differential Revision: https://reviews.llvm.org/D114432
The file was modifiedlibc/src/string/memory_utils/CMakeLists.txt (diff)
The file was modifiedlibc/src/string/CMakeLists.txt (diff)
The file was addedlibc/src/string/memory_utils/bcmp_implementations.h
The file was modifiedlibc/src/string/bcmp.cpp (diff)
The file was modifiedlibc/test/src/string/bcmp_test.cpp (diff)
Commit a34f24689945e967e4ba4d79ed301d3a71870c7b by Louis Dionne
[libc++][ABI BREAK] Do not use the C++03 emulation for std::nullptr_t by default

We only support Clangs that implement nullptr as an extension in C++03 mode,
and we don't support GCC in C++03 mode. Hence, this patch disables the
use of the std::nullptr_t emulation in C++03 mode by default. Doing that
is technically an ABI break since it changes the mangling for std::nullptr_t.
However:

(1) The only affected users are those compiling in C++03 mode that have
    std::nullptr_t as part of their ABI, which should be reasonably rare.

(2) Those users already have a lingering problem in that their code will
    be incompatible in C++03 and C++11 modes because of that very ABI break.
    Hence, the only users that could really be inconvenienced about this
    change is those that planned on compiling in C++03 mode forever - for
    other users, we're just breaking them now instead of letting them break
    themselves later on when they try to upgrade to C++11.

(3) The ABI break will cause a linker error since the mangling changed,
    and will not result in an obscure runtime error.

Furthermore, if anyone is broken by this, they can define the
_LIBCPP_ABI_USE_CXX03_NULLPTR_EMULATION macro to return to the
previous behavior. We will then remove that macro after shipping
this for one release if we haven't seen widespread issues.

Concretely, the motivation for making this change is to make our own ABI
consistent in C++03 and C++11 modes and to remove complexity around the
definition of nullptr.

Furthermore, we could investigate making nullptr a keyword in C++03 mode
as a Clang extension -- I don't think that would break anyone, since
libc++ already defines nullptr as a macro to something else. Only users
that do not use libc++ and compile in C++03 mode could potentially be
broken by that.

Differential Revision: https://reviews.llvm.org/D109459
The file was modifiedlibcxx/docs/ReleaseNotes.rst (diff)
The file was modifiedlibcxx/include/__config (diff)
Commit 52ff3b009388f1bef4854f1b6470b4ec19d10b0e by david.green
[DAG] Create fptosi.sat from clamped fptosi

This adds a fold in DAGCombine to create fptosi_sat from sequences for
smin(smax(fptosi(x))) nodes, where the min/max saturate the output of
the fp convert to a specific bitwidth (say INT_MIN and INT_MAX). Because
it is dealing with smin(/smax) in DAG they may currently be ISD::SMIN,
ISD::SETCC/ISD::SELECT, ISD::VSELECT or ISD::SELECT_CC nodes which need
to be handled similarly.

A shouldConvertFpToSat method was added to control when converting may
be profitable. The original fptosi will have a less strict semantics
than the fptosisat, with less values that need to produce defined
behaviour.

This especially helps on ARM/AArch64 where the vcvt instructions
naturally saturate the result.

Differential Revision: https://reviews.llvm.org/D111976
The file was modifiedllvm/test/CodeGen/AArch64/fpclamptosat_vec.ll (diff)
The file was modifiedllvm/lib/Target/ARM/ARMISelLowering.cpp (diff)
The file was modifiedllvm/lib/Target/RISCV/RISCVISelLowering.cpp (diff)
The file was modifiedllvm/test/CodeGen/WebAssembly/fpclamptosat_vec.ll (diff)
The file was modifiedllvm/lib/Target/ARM/ARMISelLowering.h (diff)
The file was modifiedllvm/lib/Target/RISCV/RISCVISelLowering.h (diff)
The file was modifiedllvm/test/CodeGen/Thumb2/mve-fpclamptosat_vec.ll (diff)
The file was modifiedllvm/test/CodeGen/ARM/fpclamptosat.ll (diff)
The file was modifiedllvm/test/CodeGen/RISCV/fpclamptosat.ll (diff)
The file was modifiedllvm/test/CodeGen/X86/fpclamptosat.ll (diff)
The file was modifiedllvm/lib/Target/AArch64/AArch64ISelLowering.cpp (diff)
The file was modifiedllvm/test/CodeGen/AArch64/fpclamptosat.ll (diff)
The file was modifiedllvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp (diff)
The file was modifiedllvm/include/llvm/CodeGen/TargetLowering.h (diff)
The file was modifiedllvm/test/CodeGen/WebAssembly/fpclamptosat.ll (diff)
The file was modifiedllvm/lib/Target/AArch64/AArch64ISelLowering.h (diff)
Commit 8dda516b83255f96b3918f73bb64282655c4cc75 by jeremy.morse
[DebugInfo][InstrRef] Avoid dropping fragment info during PHI elimination

InstrRefBasedLDV used to crash on the added test -- the exit block is not
in scope for the variable being propagated, but is still considered because
it contains an assignment. The failure-mode was vlocJoin ignoring
assign-only blocks and not updating DIExpressions, but pickVPHILoc would
still find a variable location for it. That led to DBG_VALUEs created with
the wrong fragment information.

Fix this by removing a filter inherited from VarLocBasedLDV: vlocJoin will
now consider assign-only blocks and will update their expressions.

Differential Revision: https://reviews.llvm.org/D114727
The file was modifiedllvm/unittests/CodeGen/InstrRefLDVTest.cpp (diff)
The file was modifiedllvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.cpp (diff)
The file was addedllvm/test/DebugInfo/MIR/InstrRef/out-of-scope-blocks.mir
The file was modifiedllvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.h (diff)
Commit 14c4051122bf4070d624b82189f1093758ecdf69 by abinav.puthanpurayil
[AMDGPU][NFC] Remove unused defvar in AMDGPUInstructions.td.
The file was modifiedllvm/lib/Target/AMDGPU/AMDGPUInstructions.td (diff)
Commit 7093c8101033cc104ce79e8871ac0fb9b70b28c3 by jeremy.morse
[DebugInfo][InstrRef][X86] Instrument expanded DYN_ALLOCAs

If we have a DYN_ALLOCA_* instruction, it will eventually be expanded to a
stack probe and subtract-from-SP. Add debug-info instrumentation to
X86FrameLowering::emitStackProbe so that it can redirect debug-info for the
DYN_ALLOCA to the lowered stack probe. In practice, this means putting an
instruction number label either the call instruction to _chkstk for win32,
or more commonly on the subtract from SP instruction. The two tests added
cover both of these cases.

Differential Revision: https://reviews.llvm.org/D114452
The file was modifiedllvm/lib/Target/X86/X86FrameLowering.cpp (diff)
The file was addedllvm/test/DebugInfo/X86/instr-ref-dyn-alloca-win32.ll
The file was modifiedllvm/lib/Target/X86/X86FrameLowering.h (diff)
The file was modifiedllvm/lib/Target/X86/X86DynAllocaExpander.cpp (diff)
The file was addedllvm/test/DebugInfo/X86/instr-ref-dyn-alloca.ll
Commit f910aa910555b563f552b2abfc172a2f97a5fb34 by pifon
[mlir] Fix BufferizationToMemRef build.
The file was modifiedmlir/lib/Conversion/BufferizationToMemRef/CMakeLists.txt (diff)
The file was modifiedutils/bazel/llvm-project-overlay/mlir/BUILD.bazel (diff)
Commit 97db64082eb02f831e51b311bd9b7c39e0817e23 by pifon
[mlir] Add bazel build for BufferizationToMemRef.
The file was modifiedutils/bazel/llvm-project-overlay/mlir/BUILD.bazel (diff)
Commit 651122fc4ac92b93f36aab3b194de21065a0c48e by jeremy.morse
[DebugInfo][InstrRef] Pre-land on-by-default-for-x86 changes

Over in D114631 and [0] there's a plan for turning instruction referencing
on by default for x86. This patch adds / removes all the relevant bits of
code, with the aim that the final patch is extremely small, for an easy
revert. It should just be a condition in CommandFlags.cpp and removing the
XFail on instr-ref-flag.ll.

[0] https://lists.llvm.org/pipermail/llvm-dev/2021-November/153653.html
The file was removedclang/test/Driver/debug-var-experimental-switch.c
The file was addedllvm/test/DebugInfo/X86/instr-ref-flag.ll
The file was modifiedllvm/lib/CodeGen/CommandFlags.cpp (diff)
The file was modifiedclang/include/clang/Driver/Options.td (diff)
The file was modifiedllvm/include/llvm/CodeGen/CommandFlags.h (diff)
Commit 47f759309eeaf9bd77debe4f6c3e1fe52913b537 by clementval
[fir] Add array value copy pass

This patch upstream the array value copy pass.

Transform the set of array value primitives to a memory-based array
representation.

The Ops `array_load`, `array_store`, `array_fetch`, and `array_update` are
used to manage abstract aggregate array values. A simple analysis is done
to determine if there are potential dependences between these operations.
If not, these array operations can be lowered to work directly on the memory
representation. If there is a potential conflict, a temporary is created
along with appropriate copy-in/copy-out operations. Here, a more refined
analysis might be deployed, such as using the affine framework.

This pass is required before code gen to the LLVM IR dialect.

This patch is part of the upstreaming effort from fir-dev branch. The
pass is bringing quite a lot of file with it.

Reviewed By: kiranchandramohan, schweitz

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

Co-authored-by: Jean Perier <jperier@nvidia.com>
Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
Co-authored-by: V Donaldson <vdonaldson@nvidia.com>
The file was addedflang/test/Fir/array-value-copy.fir
The file was modifiedflang/unittests/Optimizer/Builder/FIRBuilderTest.cpp (diff)
The file was addedflang/include/flang/Optimizer/Transforms/Factory.h
The file was modifiedflang/lib/Optimizer/Dialect/FIROps.cpp (diff)
The file was addedflang/lib/Optimizer/Transforms/ArrayValueCopy.cpp
The file was modifiedflang/include/flang/Optimizer/Transforms/Passes.h (diff)
The file was modifiedflang/include/flang/Optimizer/Builder/Runtime/RTBuilder.h (diff)
The file was modifiedflang/include/flang/Optimizer/Transforms/Passes.td (diff)
The file was modifiedflang/include/flang/Optimizer/Dialect/FIRTypes.td (diff)
The file was modifiedflang/include/flang/Optimizer/Builder/FIRBuilder.h (diff)
The file was modifiedflang/lib/Optimizer/Transforms/CMakeLists.txt (diff)
The file was modifiedflang/test/Fir/invalid.fir (diff)
The file was modifiedflang/include/flang/Optimizer/Dialect/FIROpsSupport.h (diff)
The file was modifiedflang/lib/Optimizer/Builder/FIRBuilder.cpp (diff)
Commit ee0c75eba31bdaf32e8f01803408d63ae42e3339 by thakis
[gn build] (semimanually) port 25a7e4b9f7c6
The file was modifiedllvm/utils/gn/secondary/compiler-rt/lib/sanitizer_common/BUILD.gn (diff)
Commit a6e673643c44f94557fa09022a3c6edf76167871 by pavel
[lldb] Inline Platform::LoadCachedExecutable into its (single) caller
The file was modifiedlldb/include/lldb/Target/Platform.h (diff)
The file was modifiedlldb/source/Target/Platform.cpp (diff)
Commit 1408684957bbfb5b412e0ef3c027c88daa1058eb by pavel
[lldb] Introduce PlatformQemuUser

This adds a new platform class, whose job is to enable running
(debugging) executables under qemu.

(For general information about qemu, I recommend reading the RFC thread
on lldb-dev
<https://lists.llvm.org/pipermail/lldb-dev/2021-October/017106.html>.)

This initial patch implements the necessary boilerplate as well as the
minimal amount of functionality needed to actually be able to do
something useful (which, in this case means debugging a fully statically
linked executable).

The knobs necessary to emulate dynamically linked programs, as well as
to control other aspects of qemu operation (the emulated cpu, for
instance) will be added in subsequent patches. Same goes for the ability
to automatically bind to the executables of the emulated architecture.

Currently only two settings are available:
- architecture: the architecture that we should emulate
- emulator-path: the path to the emulator

Even though this patch is relatively small, it doesn't lack subtleties
that are worth calling out explicitly:
- named sockets: qemu supports tcp and unix socket connections, both of
  them in the "forward connect" mode (qemu listening, lldb connecting).
  Forward TCP connections are impossible to realise in a race-free way.
  This is the reason why I chose unix sockets as they have larger, more
  structured names, which can guarantee that there are no collisions
  between concurrent connection attempts.
- the above means that this code will not work on windows. I don't think
  that's an issue since user mode qemu does not support windows anyway.
- Right now, I am leaving the code enabled for windows, but maybe it
  would be better to disable it (otoh, disabling it means windows
  developers can't check they don't break it)
- qemu-user also does not support macOS, so one could contemplate
  disabling it there too. However, macOS does support named sockets, so
  one can even run the (mock) qemu tests there, and I think it'd be a
  shame to lose that.

Differential Revision: https://reviews.llvm.org/D114509
The file was addedlldb/source/Plugins/Platform/QemuUser/PlatformQemuUser.cpp
The file was modifiedlldb/packages/Python/lldbsuite/test/gdbclientutils.py (diff)
The file was addedlldb/source/Plugins/Platform/QemuUser/PlatformQemuUserProperties.td
The file was addedlldb/test/API/qemu/qemu.py
The file was addedlldb/test/API/qemu/main.c
The file was addedlldb/source/Plugins/Platform/QemuUser/CMakeLists.txt
The file was addedlldb/source/Plugins/Platform/QemuUser/PlatformQemuUser.h
The file was modifiedlldb/source/Plugins/Platform/CMakeLists.txt (diff)
The file was addedlldb/test/API/qemu/TestQemuLaunch.py
The file was addedlldb/test/API/qemu/Makefile
Commit 9a86eb5602481fbd7e5d1b1a1c13240e82f273ef by llvm-dev
[X86] Add mulh test coverage for extension to illegal type

Part of D113371 - add test coverage for case where we're truncating from an illegal type
The file was modifiedllvm/test/CodeGen/X86/pmulh.ll (diff)
Commit 3c045070882f3f43135da6a40ef3f6508fe43af6 by jeremy.morse
[DebugInfo] Turn instruction referencing on by default for x86

This patch is designed to be reverted -- it activates a reasonably large
block of new-ish code, so some turbulence is likely.

Instruction referencing is best summarised, and it being on-by-default,
is discussed here:

    https://lists.llvm.org/pipermail/llvm-dev/2021-November/153653.html

Differential Revision: https://reviews.llvm.org/D114631
The file was modifiedllvm/test/DebugInfo/X86/instr-ref-flag.ll (diff)
The file was modifiedllvm/lib/CodeGen/CommandFlags.cpp (diff)
Commit 6f4dd1b2dca8ef877eb2447af8b33ae7e68ba1be by flo
[BuildLibCalls] Add memset_chk test.
The file was modifiedllvm/test/Transforms/InferFunctionAttrs/annotate.ll (diff)
Commit 41d59a36459ea99ada4819a26072366f77484f87 by flo
[DSE] Add memset_chk tests.
The file was modifiedllvm/test/Transforms/DeadStoreElimination/stores-of-existing-values.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/libcalls.ll (diff)
Commit 0c1b18f0f3e526da7dcbbd5a9e363dca85a90c95 by mateja.marjanovic
Test commit

Change-Id: I1d310a860ed673acdc8177232c91025004b1f3d2
The file was modifiedllvm/test/CodeGen/AMDGPU/load-constant-f32.ll (diff)
Commit a87782c34d667d1c1a18fe82a9a7abfc72fd345b by hans
Revert "[DAG] Create fptosi.sat from clamped fptosi"

It causes builds to fail with this assert:

llvm/include/llvm/ADT/APInt.h:990:
bool llvm::APInt::operator==(const llvm::APInt &) const:
Assertion `BitWidth == RHS.BitWidth && "Comparison requires equal bit widths"' failed.

See comment on the code review.

> This adds a fold in DAGCombine to create fptosi_sat from sequences for
> smin(smax(fptosi(x))) nodes, where the min/max saturate the output of
> the fp convert to a specific bitwidth (say INT_MIN and INT_MAX). Because
> it is dealing with smin(/smax) in DAG they may currently be ISD::SMIN,
> ISD::SETCC/ISD::SELECT, ISD::VSELECT or ISD::SELECT_CC nodes which need
> to be handled similarly.
>
> A shouldConvertFpToSat method was added to control when converting may
> be profitable. The original fptosi will have a less strict semantics
> than the fptosisat, with less values that need to produce defined
> behaviour.
>
> This especially helps on ARM/AArch64 where the vcvt instructions
> naturally saturate the result.
>
> Differential Revision: https://reviews.llvm.org/D111976

This reverts commit 52ff3b009388f1bef4854f1b6470b4ec19d10b0e.
The file was modifiedllvm/lib/Target/ARM/ARMISelLowering.h (diff)
The file was modifiedllvm/lib/Target/RISCV/RISCVISelLowering.cpp (diff)
The file was modifiedllvm/test/CodeGen/AArch64/fpclamptosat.ll (diff)
The file was modifiedllvm/test/CodeGen/WebAssembly/fpclamptosat_vec.ll (diff)
The file was modifiedllvm/test/CodeGen/RISCV/fpclamptosat.ll (diff)
The file was modifiedllvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp (diff)
The file was modifiedllvm/test/CodeGen/AArch64/fpclamptosat_vec.ll (diff)
The file was modifiedllvm/test/CodeGen/WebAssembly/fpclamptosat.ll (diff)
The file was modifiedllvm/lib/Target/AArch64/AArch64ISelLowering.h (diff)
The file was modifiedllvm/lib/Target/RISCV/RISCVISelLowering.h (diff)
The file was modifiedllvm/test/CodeGen/ARM/fpclamptosat.ll (diff)
The file was modifiedllvm/include/llvm/CodeGen/TargetLowering.h (diff)
The file was modifiedllvm/test/CodeGen/X86/fpclamptosat.ll (diff)
The file was modifiedllvm/test/CodeGen/Thumb2/mve-fpclamptosat_vec.ll (diff)
The file was modifiedllvm/lib/Target/AArch64/AArch64ISelLowering.cpp (diff)
The file was modifiedllvm/lib/Target/ARM/ARMISelLowering.cpp (diff)
Commit 6e2aecd759dc3f8bf664323388365ac234271e9b by yitzhakm
[clang][dataflow] Add base types for building dataflow analyses

This is part of the implementation of the dataflow analysis framework.
See "[RFC] A dataflow analysis framework for Clang AST" on cfe-dev.

Reviewed By: ymandel, xazax.hun, gribozavr2

Differential Revision: https://reviews.llvm.org/D114234
The file was modifiedclang/lib/Analysis/CMakeLists.txt (diff)
The file was addedclang/include/clang/Analysis/FlowSensitive/DataflowEnvironment.h
The file was addedclang/lib/Analysis/FlowSensitive/CMakeLists.txt
The file was addedclang/lib/Analysis/FlowSensitive/TypeErasedDataflowAnalysis.cpp
The file was addedclang/include/clang/Analysis/FlowSensitive/DataflowAnalysis.h
The file was addedclang/include/clang/Analysis/FlowSensitive/DataflowLattice.h
The file was addedclang/include/clang/Analysis/FlowSensitive/TypeErasedDataflowAnalysis.h
Commit c01c62c76c60a5a5da0496e41faae907944c92dd by abidh
[MC][ELF] Fix accepting abbreviated form with Type change

Follow up to D92052 and D94072, exposed due to D107707

Many assemblers to permit that only the first .section contains all
the attributes like '.lds_bss,"w",@nobits' and later section only
use the name ('.lds_bss') inheriting those attributes from the first
section.  I turned out that the case that Type changed was missed
when implementing it - and D107707 make it much more likely to hit
that issue. That's fixed by this commit.

Reviewed By: MaskRay

Differential Revision: https://reviews.llvm.org/D114717
The file was modifiedllvm/lib/MC/MCParser/ELFAsmParser.cpp (diff)
The file was modifiedllvm/test/MC/ELF/section-omitted-attributes.s (diff)
Commit cf3422d3df5b00d771bba837b9f51f67ab07eb64 by clementval
[fir] Add fir reduction builder

This patch introduces a bunch of builder functions
to create function calls to runtime reduction functions.

This patch is part of the upstreaming effort from fir-dev branch.

Co-authored-by: Jean Perier <jperier@nvidia.com>
Co-authored-by: mleair <leairmark@gmail.com>

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

Reviewed By: awarzynski
The file was modifiedflang/unittests/Optimizer/CMakeLists.txt (diff)
The file was addedflang/include/flang/Optimizer/Builder/Runtime/Reduction.h
The file was modifiedflang/lib/Optimizer/Builder/CMakeLists.txt (diff)
The file was modifiedflang/unittests/Optimizer/Builder/Runtime/RuntimeCallTestBase.h (diff)
The file was addedflang/unittests/Optimizer/Builder/Runtime/ReductionTest.cpp
The file was addedflang/lib/Optimizer/Builder/Runtime/Reduction.cpp
Commit 74cbd71072de4f20c5cb9852dc4cf96ac7a4b5a4 by vyng
[lld-macho] Mark dylib symbols coming from -weak_framework as weak-ref.

PR:52564

Differential Revision: https://reviews.llvm.org/D114397
The file was modifiedlld/test/MachO/weak-import.s (diff)
The file was modifiedlld/MachO/Symbols.h (diff)
Commit 914e72d40014de1c61709969666be59f27712e5e by gysit
[mlir][linalg] Run CSE after every CodegenStrategy transformation.

Add CSE after every transformation. Transformations such as tiling introduce redundant computation, for example, one AffineMinOp for every operand dimension pair. Follow up transformations such as Padding and Hoisting benefit from CSE since comparing slice sizes simplifies to comparing SSA values instead of analyzing affine expressions.

Reviewed By: nicolasvasilache

Differential Revision: https://reviews.llvm.org/D114585
The file was modifiedmlir/test/Dialect/Linalg/codegen-strategy.mlir (diff)
The file was modifiedmlir/lib/Dialect/Linalg/Transforms/LinalgStrategyPasses.cpp (diff)
Commit 7986a5f23ebbf7fc3c6d667610fd193288dba7ce by jhuber6
[OpenMP] Add RTL function to externalization RAII

This patch adds the `__kmpc_get_warp_size` OpenMP RTL function to the
externalization RAII struct. This was getting optimized out and then
being replaced with an undefined value once added back in, causing bugs
for complex reductions.

Reviewed By: jdoerfert

Differential Revision: https://reviews.llvm.org/D114802
The file was modifiedllvm/lib/Transforms/IPO/OpenMPOpt.cpp (diff)
Commit 1ae7342a7dd44561c86dcd2de456169185e1ce80 by gysit
[mlir][linalg] Fix windows build issue in hoist padding.

Iterating backwardSlice and removing elements at the same time can fail on windows for specific build configurations (the code was introduced in https://reviews.llvm.org/D114420). This revision introduces a second vector to collect all operations and removes them after finishing the reverse iteration.

Reviewed By: hpmorgan

Differential Revision: https://reviews.llvm.org/D114775
The file was modifiedmlir/lib/Dialect/Linalg/Transforms/HoistPadding.cpp (diff)
Commit 9e8a71caf02a503006eb08b5cd291adeaa20a9c2 by david.green
[DAG] Create fptosi.sat from clamped fptosi

This adds a fold in DAGCombine to create fptosi_sat from sequences for
smin(smax(fptosi(x))) nodes, where the min/max saturate the output of
the fp convert to a specific bitwidth (say INT_MIN and INT_MAX). Because
it is dealing with smin(/smax) in DAG they may currently be ISD::SMIN,
ISD::SETCC/ISD::SELECT, ISD::VSELECT or ISD::SELECT_CC nodes which need
to be handled similarly.

A shouldConvertFpToSat method was added to control when converting may
be profitable. The original fptosi will have a less strict semantics
than the fptosisat, with less values that need to produce defined
behaviour.

This especially helps on ARM/AArch64 where the vcvt instructions
naturally saturate the result.

Differential Revision: https://reviews.llvm.org/D111976
The file was modifiedllvm/lib/Target/RISCV/RISCVISelLowering.h (diff)
The file was modifiedllvm/test/CodeGen/RISCV/fpclamptosat.ll (diff)
The file was modifiedllvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp (diff)
The file was modifiedllvm/include/llvm/CodeGen/TargetLowering.h (diff)
The file was modifiedllvm/test/CodeGen/ARM/fpclamptosat.ll (diff)
The file was modifiedllvm/test/CodeGen/AArch64/fpclamptosat.ll (diff)
The file was modifiedllvm/lib/Target/AArch64/AArch64ISelLowering.cpp (diff)
The file was modifiedllvm/lib/Target/RISCV/RISCVISelLowering.cpp (diff)
The file was modifiedllvm/test/CodeGen/WebAssembly/fpclamptosat.ll (diff)
The file was modifiedllvm/lib/Target/AArch64/AArch64ISelLowering.h (diff)
The file was modifiedllvm/test/CodeGen/X86/fpclamptosat.ll (diff)
The file was modifiedllvm/test/CodeGen/Thumb2/mve-fpclamptosat_vec.ll (diff)
The file was modifiedllvm/test/CodeGen/WebAssembly/fpclamptosat_vec.ll (diff)
The file was modifiedllvm/lib/Target/ARM/ARMISelLowering.h (diff)
The file was modifiedllvm/lib/Target/ARM/ARMISelLowering.cpp (diff)
The file was modifiedllvm/test/CodeGen/AArch64/fpclamptosat_vec.ll (diff)
Commit 7f7103cd06b06f54e69fdb0aa7361b02b7c86177 by gysit
[mlir][linalg] Use top down traversal for padding.

Pad the operation using a top down traversal. The top down traversal unlocks folding opportunities and dim op canonicalizations due to the introduced extract slice operation after the padded operation.

Depends On D114585

Reviewed By: nicolasvasilache

Differential Revision: https://reviews.llvm.org/D114689
The file was modifiedmlir/lib/Dialect/Linalg/Transforms/LinalgStrategyPasses.cpp (diff)
The file was modifiedmlir/test/Dialect/Linalg/pad.mlir (diff)
Commit 3e32f827e2647b6fa8022cbc76eac384b3c4e2b4 by yitzhakm
[clang][dataflow] Fix broken build in ClangStaticAnalyzer

Adds a missing virtual destructor.
The file was modifiedclang/include/clang/Analysis/FlowSensitive/TypeErasedDataflowAnalysis.h (diff)
Commit 316e627c2b98bac867836378dd6294ad79f7eb3f by gysit
[mlir][linalg] Support the empty anchor op string when padding.

Add support for an empty anchor op string in vectorization. An empty anchor op string is useful after fusion when there are multiple different operations to vectorize.

Depends On D114689

Reviewed By: nicolasvasilache

Differential Revision: https://reviews.llvm.org/D114690
The file was modifiedmlir/include/mlir/Dialect/Linalg/Transforms/CodegenStrategy.h (diff)
The file was modifiedmlir/test/Dialect/Linalg/codegen-strategy.mlir (diff)
The file was modifiedmlir/test/lib/Dialect/Linalg/TestLinalgCodegenStrategy.cpp (diff)
Commit c9ad356266f3c91d90bcb149d178423cb3e04c42 by flo
[DSE] Use optimized access if available for redundant store elimination.

Using the optimized access enables additional optimizations in cases
where the defining access is a non-aliasing store.

Alternatively we could also walk upwards and skip non-aliasing defs
here, but my experiments so far showed that this will noticeably
increase compile-time for little extra gain compared to just using the
optimized access.

Improvements of dse.NumRedundantStores on MultiSource/CINT2006/CPF2006
on X86 with -O3:

     test-suite...-typeset/consumer-typeset.test     1.00                  76.00              7500.0%
     test-suite.../Benchmarks/Bullet/bullet.test     3.00                  12.00              300.0%
     test-suite...006/453.povray/453.povray.test     3.00                   6.00              100.0%
     test-suite...telecomm-gsm/telecomm-gsm.test     1.00                   2.00              100.0%
     test-suite...ediabench/gsm/toast/toast.test     1.00                   2.00              100.0%
     test-suite...marks/7zip/7zip-benchmark.test     1.00                   2.00              100.0%
     test-suite...ications/JM/lencod/lencod.test     7.00                  10.00              42.9%
     test-suite...6/464.h264ref/464.h264ref.test     6.00                   8.00              33.3%
     test-suite...ications/JM/ldecod/ldecod.test     6.00                   7.00              16.7%
     test-suite...006/447.dealII/447.dealII.test    33.00                  33.00               0.0%
     test-suite...6/471.omnetpp/471.omnetpp.test    NaN                     1.00               nan%
     test-suite...006/450.soplex/450.soplex.test    NaN                     2.00               nan%
     test-suite.../CINT2006/403.gcc/403.gcc.test    NaN                     7.00               nan%
     test-suite...lications/ClamAV/clamscan.test    NaN                     1.00               nan%
     test-suite...CI_Purple/SMG2000/smg2000.test    NaN                     3.00               nan%

Follow-up to D111727.

Reviewed By: nikic

Differential Revision: https://reviews.llvm.org/D112315
The file was modifiedllvm/lib/Transforms/Scalar/DeadStoreElimination.cpp (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/stores-of-existing-values.ll (diff)
Commit 1e8286467036d8ef1a972de723f805a4981b2692 by jamesfarrell
Use VersionTuple for parsing versions in Triple. This makes it possible to distinguish between "16" and "16.0" after parsing, which previously was not possible.

See also https://github.com/android/ndk/issues/1455.

Differential Revision: https://reviews.llvm.org/D114163
The file was modifiedllvm/unittests/ADT/TripleTest.cpp (diff)
The file was modifiedclang/lib/Basic/Targets/OSTargets.cpp (diff)
The file was modifiedllvm/lib/Analysis/TargetLibraryInfo.cpp (diff)
The file was modifiedllvm/lib/Support/Triple.cpp (diff)
The file was modifiedllvm/lib/Target/X86/X86Subtarget.h (diff)
The file was modifiedclang/test/Sema/availability-guard-format.mm (diff)
The file was modifiedclang/lib/Driver/ToolChains/MSVC.cpp (diff)
The file was modifiedllvm/lib/Target/AArch64/AArch64Subtarget.h (diff)
The file was modifiedllvm/include/llvm/ADT/Triple.h (diff)
The file was modifiedclang/test/SemaObjC/attr-availability.m (diff)
The file was modifiedclang/test/Sema/attr-availability-android.c (diff)
The file was modifiedclang/lib/Driver/ToolChains/Linux.cpp (diff)
The file was modifiedclang/lib/Basic/Targets/OSTargets.h (diff)
The file was modifiedclang/lib/Driver/ToolChains/Darwin.cpp (diff)
The file was modifiedclang/test/SemaObjC/property-deprecated-warning.m (diff)
The file was modifiedclang/test/Sema/attr-availability.c (diff)
The file was modifiedclang/lib/ARCMigrate/ARCMT.cpp (diff)
The file was modifiedclang/lib/Driver/ToolChains/NetBSD.cpp (diff)
The file was modifiedllvm/lib/MC/MCStreamer.cpp (diff)
The file was modifiedllvm/lib/Target/AArch64/AArch64Subtarget.cpp (diff)
The file was modifiedclang/lib/Basic/Targets/X86.h (diff)
The file was modifiedclang/test/SemaObjC/unguarded-availability-maccatalyst.m (diff)
The file was modifiedclang/test/SemaObjC/unguarded-availability.m (diff)
Commit 98dbcff19cfedb4e27d267310a76d616cd435447 by gysit
[mlir][linalg] Adapt the decompose patterns to use a filter (NFC).

The revision updates the convolution decomposition patterns to take a linalg transformation filter. The transformation filter in a later revision allows use the patterns from CodegenStrategy.

Depends On D114690

Reviewed By: nicolasvasilache

Differential Revision: https://reviews.llvm.org/D114797
The file was modifiedmlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h (diff)
The file was modifiedmlir/lib/Dialect/Linalg/Transforms/LinalgStrategyPasses.cpp (diff)
The file was modifiedmlir/include/mlir/Dialect/Linalg/Passes.h (diff)
The file was modifiedmlir/include/mlir/Dialect/Linalg/Passes.td (diff)
The file was modifiedmlir/lib/Dialect/Linalg/Transforms/Transforms.cpp (diff)
Commit c8f2139eb0de70eec16901d2a7ddfdec62659685 by gysit
[mlir][linalg] Add decompose to CodegenStrategy.

Add the decompose patterns that lower higher dimensional convolutions to lower dimensional ones to CodegenStrategy and use CodegenStrategy to test the decompose patterns. Additionally, remove the assertion that checks the anchor op name is set in the CodegenStrategyTest pass. Removing the assertion allows us to simplify the pipelines used in the interchange and decompose tests.

Depends On D114797

Reviewed By: nicolasvasilache

Differential Revision: https://reviews.llvm.org/D114798
The file was modifiedmlir/include/mlir/Dialect/Linalg/Transforms/CodegenStrategy.h (diff)
The file was modifiedmlir/test/Dialect/Linalg/decompose-convolution.mlir (diff)
The file was modifiedmlir/test/Dialect/Linalg/interchange.mlir (diff)
The file was modifiedmlir/test/lib/Dialect/Linalg/TestLinalgTransforms.cpp (diff)
The file was modifiedmlir/test/lib/Dialect/Linalg/TestLinalgCodegenStrategy.cpp (diff)