SuccessChanges

Summary

  1. [sanitizers] Fix checkout branch name (details)
Commit 7f708cc38f51de4d887e1c449f9114b3b6877e85 by Vitaly Buka
[sanitizers] Fix checkout branch name
The file was modifiedzorg/buildbot/builders/sanitizers/buildbot_functions.sh (diff)

Summary

  1. [libcxx][test] Don't require Container<cv T> extension on non-libc++ (details)
  2. [lld/mac] Add some support for dynamic lookup symbols, and implement -U (details)
  3. [WebAssembly] Avoid `bit_cast` when printing f32 and f64 immediates (details)
  4. [mlir][vector] add higher dimensional support to gather/scatter (details)
  5. [NFC] Suppress "warning: ignoring return value" (details)
  6. [NFC][libc++] Suppress "warning: ignoring return value" (details)
  7. [sanitizers][NFC] Change typesto avoid warnings (details)
  8. [dfsan] Record dfsan metadata in globals (details)
  9. [flang] Detect circularly defined interfaces of procedures (details)
  10. [DAGCombiner] Optimize SMULO/UMULO if we can prove that overflow is impossible. (details)
  11. AMDGPU: Use kill instruction to hint soft clause live ranges (details)
  12. [docs] Add documentation on using the new pass manager (details)
  13. [MLIR][TOSA] Lower tosa.identity and tosa.identitiyn to linalg (details)
  14. [clang] implicitly delete space ship operator with function pointers (details)
  15. [flang][fir][NFC] Removes deprecated messages in builds. (details)
  16. [InstrProfiling] Use llvm.compiler.used instead of llvm.used for ELF (details)
  17. [Driver] Print process statistics report on CC_PRINT_PROC_STAT env variable. (details)
  18. Reland "[builtins] Define fmax and scalbn inline" (details)
  19. [mlir] Add regions to OpAdaptor (details)
  20. [test] Fix PGOProfile/comdat_internal.ll (details)
  21. [AArch64][GlobalISel] Import FMOV patterns rather than manually selecting it (details)
  22. [msan] Use non-transparent-huge-page at SetShadow (details)
  23. [Driver] Fix a warning about the the initialization order (details)
Commit 30cd3dd0fb9f3160988bed723cd1a1cc2f21eede by Casey
[libcxx][test] Don't require Container<cv T> extension on non-libc++

... when testing `default_initializable`. Also, include `<memory>` for `unique_ptr`.
The file was modifiedlibcxx/test/std/concepts/concept.default.init/default_initializable.compile.pass.cpp
Commit cafb6cd10c7434fdb541a40eda89fc51880f43c0 by thakis
[lld/mac] Add some support for dynamic lookup symbols, and implement -U

Dynamic lookup symbols are symbols that work like dynamic symbols
in ELF: They're not bound to a dylib like normal Mach-O twolevel lookup
symbols, but they live in a global pool and dyld resolves them against
exported symbols from all loaded dylibs.

This adds support for dynamical lookup symbols to lld/mac. They are
represented as DylibSymbols with file set to nullptr.

This also uses this support to implement the -U flag, which makes
a specific symbol that's undefined at the end of the link a
dynamic lookup symbol.

For -U, it'd be sufficient to just to a pass over remaining undefined symbols
at the end of the link and to replace them with dynamic lookup symbols then.
But I'd like to use this code to implement flat_namespace too, and that will
require real support for resolving dynamic lookup symbols in SymbolTable. So
this patch adds this now already.

While writing tests for this, I noticed that we didn't set N_WEAK_DEF in the
symbol table for DylibSymbols, so this fixes that too.

Differential Revision: https://reviews.llvm.org/D97521
The file was modifiedlld/MachO/SymbolTable.h
The file was modifiedlld/MachO/Writer.cpp
The file was modifiedlld/MachO/Options.td
The file was addedlld/test/MachO/U-dynamic-lookup.s
The file was modifiedlld/MachO/Driver.cpp
The file was modifiedlld/MachO/SyntheticSections.cpp
The file was modifiedlld/MachO/Symbols.h
The file was modifiedlld/MachO/SymbolTable.cpp
Commit c62dabc3f501d3c60846bb6259113990d4f02e75 by Dev
[WebAssembly] Avoid `bit_cast` when printing f32 and f64 immediates

Use `APInt` to convert a 32-bit or 64-bit immediate to an `APFloat` rather than
`bit_cast` to a `float` or `double` to avoid going through host floating-point and
potentially changing the bit pattern of NaNs.

Differential Revision: https://reviews.llvm.org/D97490
The file was modifiedllvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyInstPrinter.cpp
Commit df5ccf5a94ad04231e8426dd0d02689a0717453b by ajcbik
[mlir][vector] add higher dimensional support to gather/scatter

Similar to mask-load/store and compress/expand, the gather and
scatter operation now allow for higher dimension uses. Note that
to support the mixed-type index, the new syntax is:
   vector.gather %base [%i,%j] [%kvector] ....
The first client of this generalization is the sparse compiler,
which needs to define scatter and gathers on dense operands
of higher dimensions too.

Reviewed By: bixia

Differential Revision: https://reviews.llvm.org/D97422
The file was modifiedmlir/test/Dialect/Vector/canonicalize.mlir
The file was modifiedmlir/include/mlir/Dialect/Vector/VectorOps.td
The file was modifiedmlir/lib/Dialect/Linalg/Transforms/Sparsification.cpp
The file was modifiedmlir/test/Conversion/VectorToLLVM/vector-to-llvm.mlir
The file was modifiedmlir/test/Dialect/Vector/invalid.mlir
The file was modifiedmlir/test/Dialect/Vector/vector-mem-transforms.mlir
The file was modifiedmlir/test/Integration/Dialect/Vector/CPU/test-scatter.mlir
The file was modifiedmlir/test/Dialect/Linalg/sparse_vector.mlir
The file was modifiedmlir/lib/Conversion/VectorToLLVM/ConvertVectorToLLVM.cpp
The file was modifiedmlir/test/Dialect/Vector/ops.mlir
The file was modifiedmlir/test/Integration/Dialect/Vector/CPU/test-gather.mlir
The file was modifiedmlir/test/Integration/Dialect/Vector/CPU/test-sparse-dot-matvec.mlir
The file was modifiedmlir/test/Integration/Dialect/Vector/CPU/test-sparse-saxpy-jagged-matvec.mlir
The file was modifiedmlir/lib/Dialect/Vector/VectorOps.cpp
Commit e29063b16edfa3d98d34d0d15afa44519c47b781 by Vitaly Buka
[NFC] Suppress "warning: ignoring return value"
The file was modifiedcompiler-rt/lib/profile/InstrProfilingFile.c
Commit 3744ba24dcf3ff5ecfa76fade18549528fe49942 by Vitaly Buka
[NFC][libc++] Suppress "warning: ignoring return value"

According to the comment on the next line
it's expected behaviour.
The file was modifiedlibcxx/include/new
Commit 812a9061338dad80a3e9725db95f67590bc54dcd by Vitaly Buka
[sanitizers][NFC] Change typesto avoid warnings

Warning was enabled by D94640
The file was modifiedcompiler-rt/lib/sanitizer_common/tests/sanitizer_allocator_test.cpp
The file was modifiedcompiler-rt/lib/sanitizer_common/sanitizer_allocator_primary64.h
Commit c9075a1c8e22663c5f4140294ee8b561feff7e14 by gbalats
[dfsan] Record dfsan metadata in globals

This will allow identifying exactly how many shadow bytes were used
during compilation, for when fast8 mode is introduced.

Also, it will provide a consistent matching point for instrumentation
tests so that the exact llvm type used (i8 or i16) for the shadow can
be replaced by a pattern substitution. This is handy for tests with
multiple prefixes.

Reviewed by: stephan.yichao.zhao, morehouse

Differential Revision: https://reviews.llvm.org/D97409
The file was modifiedllvm/test/Instrumentation/DataFlowSanitizer/basic.ll
The file was modifiedllvm/lib/Transforms/Instrumentation/DataFlowSanitizer.cpp
Commit 07de0846a5055015b55dc2b8faa2143f9902e549 by psteinfeld
[flang] Detect circularly defined interfaces of procedures

It's possible to define a procedure whose interface depends on a procedure
which has an interface that depends on the original procedure.  Such a circular
definition was causing the compiler to fall into an infinite loop when
resolving the name of the second procedure.  It's also possible to create
circular dependency chains of more than two procedures.

I fixed this by adding the function HasCycle() to the class DeclarationVisitor
and calling it from DeclareProcEntity() to detect procedures with such
circularly defined interfaces.  I marked the associated symbols of such
procedures by calling SetError() on them.  When processing subsequent
procedures, I called HasError() before attempting to analyze their interfaces.
Unfortunately, this did not work.

With help from Tim, we determined that the SymbolSet used to track the
erroneous symbols was instantiated using a "<" operator which was
defined using the name of the procedure.  But the procedure name was
being changed by a call to ReplaceName() between the times that the
calls to SetError() and HasError() were made.  This caused HasError() to
incorrectly report that a symbol was not in the set of erroneous
symbols.  I fixed this by making SymbolSet be an ordered set, which does
not use the "<" operator.

I also added tests that will crash the compiler without this change.
And I fixed the formatting on an error message from a previous update.

Differential Revision: https://reviews.llvm.org/D97201
The file was modifiedflang/include/flang/Semantics/symbol.h
The file was modifiedflang/lib/Semantics/resolve-names.cpp
The file was modifiedflang/lib/Evaluate/characteristics.cpp
The file was modifiedflang/test/Semantics/resolve102.f90
Commit eea53b142d91c6dc8aae2a9727b4f48508d7b147 by craig.topper
[DAGCombiner] Optimize SMULO/UMULO if we can prove that overflow is impossible.

Using ComputeNumSignBits or computeKnownBits we might be able
to determine that overflow is impossible.

This especially helps after type legalization if the type was
promoted from a type with half the bits or more. Type legalization
conservatively creates a promoted smulo/umulo and an overflow
check for the promoted bits. The overflow from the promoted
smulo/umulo is ORed with the result of the promoted bits
overflow check. Proving that the promoted smulo/umulo can never
overflow will leave us with just the promoted bits overflow check.

Reviewed By: RKSimon

Differential Revision: https://reviews.llvm.org/D97160
The file was modifiedllvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
The file was modifiedllvm/test/CodeGen/RISCV/xaluo.ll
The file was modifiedllvm/test/CodeGen/AArch64/vec_umulo.ll
The file was modifiedllvm/test/CodeGen/X86/vec_umulo.ll
The file was modifiedllvm/test/CodeGen/X86/vec_smulo.ll
Commit 81b2c23b77716e1074f3e84259321cb9b8c9b2eb by Matthew.Arsenault
AMDGPU: Use kill instruction to hint soft clause live ranges

Previously we would use a bundle to hint the register allocator to not
overwrite the pointers in a sequence of loads to avoid breaking soft
clauses. This bundling was based on a fuzzy register pressure
heuristic, so we could not guarantee using more registers than are
really available. This would result in register allocator failing on
unsatisfiable bundles. Use a kill to artificially extend the live
ranges, so we can always succeed at register allocation even if it
means extra spills in the worst case.

This seems to capture most of the benefit of the bundle while avoiding
most of the risk presented by the bundle. However the lit tests do
show a handful of regressions. In some cases with sequences of
volatile loads, unused load components end up getting reallocated to
the next load which forces a wait between. There are also a few small
scheduling regressions where a hazard used to be avoided, and one
spill torture test which for some reason nearly doubles the stack
usage. There is also a bit of noise from leftover kills (it may make
sense for post-RA pseudos to strip all of these out).
The file was modifiedllvm/test/CodeGen/AMDGPU/memory-legalizer-global-agent.ll
The file was modifiedllvm/test/CodeGen/AMDGPU/GlobalISel/llvm.amdgcn.div.fmas.ll
The file was modifiedllvm/test/CodeGen/AMDGPU/unallocatable-bundle-regression.mir
The file was modifiedllvm/test/CodeGen/AMDGPU/memory-legalizer-global-system.ll
The file was modifiedllvm/test/CodeGen/AMDGPU/splitkit-getsubrangeformask.ll
The file was modifiedllvm/test/CodeGen/AMDGPU/vector_shuffle.packed.ll
The file was modifiedllvm/lib/Target/AMDGPU/SIFormMemoryClauses.cpp
The file was modifiedllvm/test/CodeGen/AMDGPU/limit-soft-clause-reg-pressure.mir
The file was modifiedllvm/test/CodeGen/AMDGPU/GlobalISel/insertelement.large.ll
The file was modifiedllvm/test/CodeGen/AMDGPU/GlobalISel/extractelement.i128.ll
The file was modifiedllvm/test/CodeGen/AMDGPU/ds_write2.ll
The file was modifiedllvm/test/CodeGen/AMDGPU/memory-legalizer-global-singlethread.ll
The file was modifiedllvm/test/CodeGen/AMDGPU/GlobalISel/insertelement.i16.ll
The file was modifiedllvm/test/CodeGen/AMDGPU/GlobalISel/load-constant.96.ll
The file was modifiedllvm/test/CodeGen/AMDGPU/GlobalISel/insertelement-stack-lower.ll
The file was modifiedllvm/test/CodeGen/AMDGPU/GlobalISel/localizer.ll
The file was modifiedllvm/test/CodeGen/AMDGPU/memory_clause.ll
The file was modifiedllvm/test/CodeGen/AMDGPU/GlobalISel/llvm.amdgcn.update.dpp.ll
The file was modifiedllvm/test/CodeGen/AMDGPU/gfx-callable-argument-types.ll
The file was modifiedllvm/lib/Target/AMDGPU/SIPostRABundler.cpp
The file was modifiedllvm/test/CodeGen/AMDGPU/memory-legalizer-global-wavefront.ll
The file was modifiedllvm/test/CodeGen/AMDGPU/postra-bundle-memops.mir
The file was modifiedllvm/test/CodeGen/AMDGPU/spill-vgpr-to-agpr.ll
The file was modifiedllvm/test/CodeGen/AMDGPU/vgpr-descriptor-waterfall-loop-idom-update.ll
The file was modifiedllvm/test/CodeGen/AMDGPU/reserved-reg-in-clause.mir
The file was modifiedllvm/test/CodeGen/AMDGPU/memory-legalizer-global-workgroup.ll
The file was modifiedllvm/test/CodeGen/AMDGPU/soft-clause-dbg-value.mir
The file was modifiedllvm/test/CodeGen/AMDGPU/memory_clause.mir
The file was modifiedllvm/test/CodeGen/AMDGPU/disable_form_clauses.ll
Commit 016f0ee68621b5cba29b153fc221b95af3330736 by aeubanks
[docs] Add documentation on using the new pass manager

And clarify in the "writing a pass" docs that both the legacy and new
PMs are being used for the codegen/optimization pipelines.

Reviewed By: ychen, asbirlea

Differential Revision: https://reviews.llvm.org/D97515
The file was addedllvm/docs/NewPassManager.rst
The file was modifiedllvm/docs/WritingAnLLVMPass.rst
The file was modifiedllvm/docs/WritingAnLLVMNewPMPass.rst
The file was modifiedllvm/docs/UserGuides.rst
Commit f685c9ac8647daeb425b05ffb9c555ccfc7ec78b by rob.suderman
[MLIR][TOSA] Lower tosa.identity and tosa.identitiyn to linalg

Both identity ops can be loweried by replacing their results with their
inputs. We keep this as a linalg lowering as other backends may choose to
create copies.

Differential Revision: https://reviews.llvm.org/D97517
The file was modifiedmlir/lib/Conversion/TosaToLinalg/TosaToLinalg.cpp
The file was modifiedmlir/test/Conversion/TosaToLinalg/tosa-to-linalg.mlir
Commit 4a8530fc3039f128eddc38737f0172bb3d489bcf by richard
[clang] implicitly delete space ship operator with function pointers

See bug #48856

Definitions of classes with member function pointers and default
spaceship operator were getting accepted with no diagnostic on
release build, and triggering assert on builds with runtime checks
enabled. Diagnostics were only produced when actually comparing
instances of such classes.

This patch makes it so Spaceship and Less operators are not considered
as builtin operator candidates for function pointers, producing
equivalent diagnostics for the cases where pointers to member function
and pointers to data members are used instead.

Reviewed By: rsmith

Differential Revision: https://reviews.llvm.org/D95409
The file was modifiedclang/lib/Sema/SemaDeclCXX.cpp
The file was modifiedclang/test/CXX/class/class.compare/class.eq/p2.cpp
The file was modifiedclang/test/CXX/class/class.compare/class.spaceship/p2.cpp
The file was modifiedclang/test/CXX/class/class.compare/class.compare.default/p2.cpp
Commit 5077d42cfa427598826eb7b69ad805bad8f4ec9d by eschweitz
[flang][fir][NFC] Removes deprecated messages in builds.
The file was modifiedflang/lib/Optimizer/Dialect/FIROps.cpp
The file was modifiedflang/include/flang/Optimizer/Dialect/FIROps.td
Commit bf176c49e842693e16c97c05d3d5fad33fc3d617 by i
[InstrProfiling] Use llvm.compiler.used instead of llvm.used for ELF

Many optimizers (e.g.  GlobalOpt/ConstantMerge) do not respect linker semantics
for comdat and may not discard the sections as a unit.

The interconnected `__llvm_prf_{cnts,data}` sections (in comdat for ELF)
are similar to D97432: `__profd_` is not directly referenced, so
`__profd_` may be discarded while `__profc_` is retained, breaking the
interconnection.  We currently conservatively add all such sections to
`llvm.used` and let the linker do GC for ELF.

In D97448, we will change GlobalObject's in the llvm.used list to use SHF_GNU_RETAIN,
causing the metadata sections to be unnecessarily retained (some `check-profile` tests check for GC).
Use `llvm.compiler.used` to retain the current GC behavior.

Differential Revision: https://reviews.llvm.org/D97585
The file was modifiedllvm/lib/Transforms/Instrumentation/InstrProfiling.cpp
The file was modifiedllvm/test/Instrumentation/InstrProfiling/profiling.ll
Commit 155c49e0878de667b8021b9ba685390151dee11e by vvereschaka
[Driver] Print process statistics report on CC_PRINT_PROC_STAT env variable.

Added supporting CC_PRINT_PROC_STAT and CC_PRINT_PROC_STAT_FILE
environment variables to trigger clang driver reporting the process
statistics into specified file (alternate for -fproc-stat-report
option).

Differential Revision: https://reviews.llvm.org/D97094
The file was modifiedclang/tools/driver/driver.cpp
The file was modifiedclang/docs/UsersManual.rst
The file was addedclang/test/Driver/cc-print-proc-stat.c
The file was modifiedclang/lib/Driver/Driver.cpp
The file was modifiedclang/include/clang/Driver/Driver.h
The file was modifiedclang/test/Driver/lit.local.cfg
Commit d202201410222766b5ffd2b032473fbb4a1b5bf8 by rprichard
Reland "[builtins] Define fmax and scalbn inline"

This reverts commit 680f836c2fa72166badd594a52b3f41b2ad074d2.

Disable the non-default-rounding-mode scalbn[f] tests when we're using
the MSVC libraries.

Differential Revision: https://reviews.llvm.org/D91841
The file was addedcompiler-rt/test/builtins/Unit/compiler_rt_scalbnf_test.c
The file was modifiedcompiler-rt/lib/builtins/divsc3.c
The file was modifiedcompiler-rt/lib/builtins/ppc/divtc3.c
The file was addedcompiler-rt/test/builtins/Unit/compiler_rt_fmaxl_test.c
The file was modifiedcompiler-rt/lib/builtins/int_math.h
The file was addedcompiler-rt/test/builtins/Unit/compiler_rt_fmax_test.c
The file was modifiedcompiler-rt/lib/builtins/divtc3.c
The file was addedcompiler-rt/test/builtins/Unit/compiler_rt_scalbn_test.c
The file was modifiedcompiler-rt/lib/builtins/divdc3.c
The file was addedcompiler-rt/test/builtins/Unit/compiler_rt_scalbnl_test.c
The file was modifiedcompiler-rt/lib/builtins/fp_lib.h
The file was addedcompiler-rt/test/builtins/Unit/compiler_rt_fmaxf_test.c
The file was modifiedcompiler-rt/lib/builtins/int_lib.h
Commit 91ab48ea6baf5e0a653a81afb6ab08e9df84c211 by jpienaar
[mlir] Add regions to OpAdaptor

Allows querying regions too via OpAdaptor's generated. This does not yet move region verification to adaptor nor require regions for ops where needed.

Differential Revision: https://reviews.llvm.org/D97519
The file was removedmlir/test/mlir-tblgen/op-decl.td
The file was addedmlir/test/mlir-tblgen/op-decl-and-defs.td
The file was modifiedmlir/tools/mlir-tblgen/OpDefinitionsGen.cpp
Commit 1d7f8c75179a60b4fd214f944cd5c705a6effa76 by i
[test] Fix PGOProfile/comdat_internal.ll
The file was modifiedllvm/test/Transforms/PGOProfile/comdat_internal.ll
Commit f5d5a7d7eac74e157c613c11945387b8846c18d1 by Jessica Paquette
[AArch64][GlobalISel] Import FMOV patterns rather than manually selecting it

There are existing patterns for FMOVHi, FMOVSi, and FMOVDi in
AArch64InstrFormats.td.

Importing these allows us to remove the manual selection code for FMOV.

It also allows us to select FMOVHi for non-zero constants when we have full
fp-16 support.

Refactor some of the code in AArch64InstrFormats.td so that we can create
equivalent custom renderers in GlobalISel.

Differential Revision: https://reviews.llvm.org/D97511
The file was modifiedllvm/lib/Target/AArch64/AArch64InstrFormats.td
The file was modifiedllvm/lib/Target/AArch64/GISel/AArch64InstructionSelector.cpp
The file was modifiedllvm/test/CodeGen/AArch64/GlobalISel/select-fp16-fconstant.mir
Commit c0dc885d29af8f2bd2434047937c2ba65c7c7adb by jianzhouzh
[msan] Use non-transparent-huge-page at SetShadow

This prevents from getting THP ranges more and more.

Did not see any issues in practice, just found this by code review.

Reviewed By: eugenis, vitalybuka

Differential Revision: https://reviews.llvm.org/D97593
The file was modifiedcompiler-rt/lib/msan/msan_poisoning.cpp
Commit 233ba2709bde54ea820cdaba0405d46b2c197e01 by kazu
[Driver] Fix a warning about the the initialization order
The file was modifiedclang/lib/Driver/Driver.cpp