SuccessChanges

Changes from Git (git http://labmaster3.local/git/llvm-project.git)

Summary

  1. [NFC][MC] Type uses of MCRegUnitIterator as MCRegister (details)
  2. [c++17] Implement P0145R3 during constant evaluation. (details)
  3. [libc++] Add a script to setup CI on macOS nodes (details)
  4. Revert [lit] Support running tests on Windows without GnuWin32 (details)
  5. Remove unneeded "allow-unregistered-dialect" from shape-type-conversion.mlir test (NFC) (details)
  6. [mlir] [sparse] convenience runtime support to read Matrix Market format (details)
  7. [libc++] Add assert to check bounds in `constexpr string_view::operator[]` (details)
  8. [CMake] Track TSan's dependency on C++ headers (details)
  9. Replace shadow space zero-out by madvise at mmap (details)
  10. docs: Emphasize ArrayRef over SmallVectorImpl (details)
  11. [RuntimeDyld][COFF] Report fatal error on error, rather than emiting diagnostic. (details)
  12. Fix out-of-tree clang build due to sysexits change (details)
  13. Relax FuseTensorReshapeOpAsproducer identity mapping constraint (details)
  14. [gn build] manually port 5e4409f308177 (details)
  15. [lldb] Change the xcrun (fallback) logic in GetXcodeSDK (details)
  16. [Attributor] Give up early on AANoReturn::initialize (details)
  17. [Attributor] Ignore read accesses to constant memory (details)
  18. [Attributor] Use smarter way to determine alignment of GEPs (details)
  19. [flang][openacc] Fix device_num and device_type clauses for init directive (details)
  20. [CodeGen][TailDuplicator] Don't duplicate blocks with INLINEASM_BR (details)
  21. [PowerPC] add more builtins for PPCTargetLowering::getTgtMemIntrinsic (details)
  22. [PowerPC] implement target hook getTgtMemIntrinsic (details)
  23. [MachineInstr] exclude call instruction in mayAlias (details)
  24. Reapply "[OpenMP][FIX] Verify compatible types for declare variant calls" D88384 (details)
  25. [Test] Add test showing that we can avoid inserting trunc/zext (details)
  26. BPF: avoid duplicated globals for CORE relocations (details)
  27. [SROA] rewritePartition()/findCommonType(): if uses have conflicting type, try getTypePartition() before falling back to largest integral use type (PR47592) (details)
  28. [lldb] Format unix signal table (NFC) (details)
Commit d85b845cb2550216b2a05c5dee451f423a4e4946 by mtrofin
[NFC][MC] Type uses of MCRegUnitIterator as MCRegister

This is one of many subsequent similar changes. Note that we're ok with
the parameter being typed as MCPhysReg, as MCPhysReg -> MCRegister is a
correct conversion; Register -> MCRegister assumes the former is indeed
physical, so we stop relying on the implicit conversion and use the
explicit, value-asserting asMCReg().

Differential Revision: https://reviews.llvm.org/D88862
The file was modifiedllvm/include/llvm/CodeGen/LiveIntervals.h
The file was modifiedllvm/lib/CodeGen/BreakFalseDeps.cpp
The file was modifiedllvm/include/llvm/CodeGen/TargetRegisterInfo.h
The file was modifiedllvm/lib/CodeGen/EarlyIfConversion.cpp
Commit 00d3e6c1b4d0b7879afc6002b721111b49ecf755 by richard
[c++17] Implement P0145R3 during constant evaluation.

Ensure that we evaluate assignment and compound-assignment
right-to-left, and array subscripting left-to-right.

Fixes PR47724.

This is a re-commit of ded79be, reverted in 37c74df, with a fix and test
for the crasher bug previously introduced.
The file was modifiedclang/www/cxx_status.html
The file was modifiedclang/lib/AST/ExprConstant.cpp
The file was modifiedclang/test/SemaCXX/constant-expression-cxx1z.cpp
Commit 370b7887e5af413e06cb0bdb23f502ca7a56280d by Louis Dionne
[libc++] Add a script to setup CI on macOS nodes
The file was addedlibcxx/utils/ci/macos-ci-setup
Commit d3d790fc9827301a49c7bbab3c1eb22da48085c6 by alexandre.ganea
Revert [lit] Support running tests on Windows without GnuWin32

This reverts b3418cb4eb1456c41606f4621dcfa362fe54183c and d12ae042e17b27ebc8d2b5ae3d8dd5f88384d093

This breaks some external bots, see discussion in https://reviews.llvm.org/D84380

In the meanwhile, please use `cmake -DLLVM_LIT_TOOLS_DIR="C:/Program Files/Git/usr/bin"` or add it to %PATH%.
The file was modifiedllvm/utils/lit/lit/llvm/config.py
Commit 5a305f81bfc3cb71f1f77f15d08dd62b32865e8a by joker.eph
Remove unneeded "allow-unregistered-dialect" from shape-type-conversion.mlir test (NFC)
The file was modifiedmlir/test/Dialect/Shape/shape-type-conversion.mlir
Commit c6c67f643dcff142b26a53059e63e5369e6d8d89 by ajcbik
[mlir] [sparse] convenience runtime support to read Matrix Market format

Setting up input data for benchmarks and integration tests can be tedious in
pure MLIR. With more sparse tensor work planned, this convenience library
simplifies reading sparse matrices in the popular Matrix Market Exchange
Format (see https://math.nist.gov/MatrixMarket). Note that this library
is *not* part of core MLIR. It is merely intended as a convenience library
for benchmarking and integration testing.

Reviewed By: penpornk

Differential Revision: https://reviews.llvm.org/D88856
The file was addedmlir/lib/ExecutionEngine/SparseUtils.cpp
The file was addedmlir/integration_test/Sparse/CPU/matrix-market-example.mlir
The file was addedmlir/integration_test/Sparse/CPU/lit.local.cfg
The file was addedmlir/integration_test/data/test.mtx
The file was modifiedmlir/integration_test/CMakeLists.txt
The file was modifiedmlir/lib/ExecutionEngine/CMakeLists.txt
Commit 9eff07a746a9e6a9b105c12b5e28073360fa8065 by Louis Dionne
[libc++] Add assert to check bounds in `constexpr string_view::operator[]`

Differential Revision: https://reviews.llvm.org/D88864
The file was modifiedlibcxx/include/string_view
Commit 4540d6624838af2b190dfb33802528eb4bfb3fb8 by phosek
[CMake] Track TSan's dependency on C++ headers

TSan relies on C++ headers, so when libc++ is being built as part of
the runtimes build, include an explicit dependency on cxx-headers which
is the same approach that's already used for other sanitizers.

Differential Revision: https://reviews.llvm.org/D88912
The file was modifiedcompiler-rt/cmake/Modules/AddCompilerRT.cmake
The file was modifiedcompiler-rt/lib/tsan/CMakeLists.txt
Commit 4d1d8ae7100ec3c7e1709addb7b3ec6f9ad0b44f by jianzhouzh
Replace shadow space zero-out by madvise at mmap

After D88686, munmap uses MADV_DONTNEED to ensure zero-out before the
next access. Because the entire shadow space is created by MAP_PRIVATE
and MAP_ANONYMOUS, the first access is also on zero-filled values.

So it is fine to not zero-out data, but use madvise(MADV_DONTNEED) at
mmap. This reduces runtime
overhead.

Reviewed-by: morehouse

Differential Revision: https://reviews.llvm.org/D88755
The file was addedcompiler-rt/test/dfsan/release_shadow_space.c
The file was removedcompiler-rt/test/dfsan/munmap_release_shadow.c
The file was modifiedcompiler-rt/lib/dfsan/dfsan_interceptors.cpp
Commit 7193f727988360acb7037b42851f0a6fae29af9b by Duncan P. N. Exon Smith
docs: Emphasize ArrayRef over SmallVectorImpl

The section on SmallVector has a note about preferring SmallVectorImpl
for APIs but doesn't mention ArrayRef. Although ArrayRef is discussed
elsewhere, let's re-emphasize here.

Differential Revision: https://reviews.llvm.org/D49881
The file was modifiedllvm/docs/ProgrammersManual.rst
Commit b45b5166f8f91e601ebd7bc73bb6800155c4c9bc by Lang Hames
[RuntimeDyld][COFF] Report fatal error on error, rather than emiting diagnostic.

Report a fatal error if an IMAGE_REL_AMD64_ADDR32NB cannot be applied due to an
out-of-range target. Previously we emitted a diagnostic to llvm::errs and
continued.

Patch by Dale Martin. Thanks Dale!
The file was modifiedllvm/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldCOFFX86_64.h
Commit 5e4409f30817798377689ef6c229f1c82815e6e8 by Matthew.Arsenault
Fix out-of-tree clang build due to sysexits change

The sysexists change broke clang building out of tree against llvm.

https://reviews.llvm.org/D88467
The file was modifiedllvm/include/llvm/Config/llvm-config.h.cmake
The file was modifiedllvm/include/llvm/Support/ExitCodes.h
The file was modifiedllvm/include/llvm/Config/config.h.cmake
Commit 7060920bd1f70b778105703a5c95066658ed5886 by ataei
Relax FuseTensorReshapeOpAsproducer identity mapping constraint

Differential Revision: https://reviews.llvm.org/D88869
The file was modifiedmlir/test/Dialect/Linalg/fusion-tensor.mlir
The file was modifiedmlir/lib/Dialect/Linalg/Transforms/FusionOnTensors.cpp
Commit dfa70a483aad438cad826c414a5d710bab6ecf49 by thakis
[gn build] manually port 5e4409f308177
The file was modifiedllvm/utils/gn/secondary/llvm/include/llvm/Config/BUILD.gn
Commit e3b0414b0ea305396a1fcfb2821ad643b0731880 by Jonas Devlieghere
[lldb] Change the xcrun (fallback) logic in GetXcodeSDK

This changes the logic in GetXcodeSDK to find an SDK with xcrun. The
code now executes the following steps:

1. If DEVELOPER_DIR is set in the environment, it invokes xcrun with
    the given developer dir. If this fails we stop and don't fall back.
2. If the shlib dir is set and exists,it invokes xcrun with the
    developer dir corresponding to the shlib dir. If this fails we fall
    back to 3.
3. We run xcrun without a developer dir.

The new behavior introduced in this patch is that we fall back to
running xcrun without a developer dir if running it based on the shlib
dir failed.

A situation where this matters is when you're running lldb from an Xcode
that has no SDKs and that is not xcode-selected. Based on lldb's shlib
dir pointing into this Xcode installation, it will do an xcrun with the
developer set to the Xcode without any SDKs which will fail. With this
patch, when that happens, we'll fall back to trying the xcode-selected
Xcode by running xcrun without a developer dir.

Differential revision: https://reviews.llvm.org/D88866
The file was modifiedlldb/source/Host/macosx/objcxx/HostInfoMacOSX.mm
Commit 3f540c05dfe90f5c0378614e3a4ada06b967227e by johannes
[Attributor] Give up early on AANoReturn::initialize

If the function is not assumed `noreturn` we should not wait for an
update to mark the call site as "may-return".

This has two kinds of consequences:
  - We have less iterations in many tests.
  - We have less deductions based on "known information" (since we ask
    earlier, point 1, and therefore assumed information is not "known"
    yet).
The latter is an artifact that we might want to tackle properly at some
point but which is not easily fixable right now.
The file was modifiedllvm/lib/Transforms/IPO/AttributorAttributes.cpp
The file was modifiedllvm/test/Transforms/Attributor/internalize.ll
The file was modifiedllvm/test/Transforms/Attributor/ArgumentPromotion/live_called_from_dead_2.ll
The file was modifiedllvm/test/Transforms/Attributor/IPConstantProp/multiple_callbacks.ll
The file was modifiedllvm/test/Transforms/Attributor/IPConstantProp/musttail-call.ll
The file was modifiedllvm/test/Transforms/Attributor/IPConstantProp/naked-return.ll
The file was modifiedllvm/test/Transforms/Attributor/readattrs.ll
The file was modifiedllvm/test/Transforms/Attributor/ArgumentPromotion/fp80.ll
The file was modifiedllvm/test/Transforms/Attributor/alwaysinline.ll
The file was modifiedllvm/test/Transforms/Attributor/ArgumentPromotion/byval.ll
The file was modifiedllvm/test/Transforms/Attributor/ArgumentPromotion/musttail.ll
The file was modifiedllvm/test/Transforms/Attributor/misc.ll
The file was modifiedllvm/test/Transforms/Attributor/ArgumentPromotion/X86/thiscall.ll
The file was modifiedllvm/test/Transforms/Attributor/ArgumentPromotion/live_called_from_dead.ll
The file was modifiedllvm/test/Transforms/Attributor/noalias.ll
The file was modifiedllvm/test/Transforms/Attributor/nocapture-2.ll
The file was modifiedllvm/test/Transforms/Attributor/read_write_returned_arguments_scc.ll
The file was modifiedllvm/test/Transforms/Attributor/returned.ll
The file was modifiedllvm/test/Transforms/Attributor/IPConstantProp/PR16052.ll
Commit c4cfe7a43512c8fadb2aa207f6d914858e2cc50e by johannes
[Attributor] Ignore read accesses to constant memory

The old function attribute deduction pass ignores reads of constant
memory and we need to copy this behavior to replace the pass completely.
First step are constant globals. TBAA can also describe constant
accesses and there are other possibilities. We might want to consider
asking the alias analyses that are available but for now this is simpler
and cheaper.
The file was modifiedllvm/test/Transforms/Attributor/ArgumentPromotion/invalidation.ll
The file was modifiedllvm/lib/Transforms/IPO/AttributorAttributes.cpp
The file was modifiedllvm/test/Transforms/Attributor/readattrs.ll
The file was modifiedllvm/test/Transforms/Attributor/ArgumentPromotion/aggregate-promote.ll
Commit 7993d61177c8c6e9aa238e57a684c6cd3db3b571 by johannes
[Attributor] Use smarter way to determine alignment of GEPs

Use same logic existing in other places to deal with base case GEPs.

Add the original Attributor talk example.
The file was modifiedllvm/test/Transforms/Attributor/ArgumentPromotion/aggregate-promote.ll
The file was modifiedllvm/test/Transforms/Attributor/align.ll
The file was modifiedllvm/lib/Transforms/IPO/AttributorAttributes.cpp
Commit 2f40e20613758b3e11a15494c09f4b6973673d6b by clementval
[flang][openacc] Fix device_num and device_type clauses for init directive

This patch fix the device_num and device_type clauses used in the init clause. device_num was not
spelled correctly in the parser and was to restrictive with scalarIntConstantExpr instead of scalarIntExpr.
device_type is now taking a list of ScalarIntExpr.

Reviewed By: kiranchandramohan

Differential Revision: https://reviews.llvm.org/D88571
The file was modifiedflang/test/Semantics/acc-clause-validity.f90
The file was modifiedflang/lib/Parser/openacc-parsers.cpp
The file was modifiedllvm/include/llvm/Frontend/OpenACC/ACC.td
Commit d2c61d2bf9bd1efad49acba2f2751112522686aa by isanbard
[CodeGen][TailDuplicator] Don't duplicate blocks with INLINEASM_BR

Tail duplication of a block with an INLINEASM_BR may result in a PHI
node on the indirect branch. This is okay, but it also introduces a copy
for that PHI node *after* the INLINEASM_BR, which is not okay.

See: https://github.com/ClangBuiltLinux/linux/issues/1125

Differential Revision: https://reviews.llvm.org/D88823
The file was addedllvm/test/CodeGen/X86/tail-dup-asm-goto.ll
The file was modifiedllvm/lib/CodeGen/TailDuplicator.cpp
Commit 0492dd91c49ca38bb45d5294f2a6711e3d40b16f by czhengsz
[PowerPC] add more builtins for PPCTargetLowering::getTgtMemIntrinsic

Reviewed By: steven.zhang

Differential Revision: https://reviews.llvm.org/D88374
The file was modifiedllvm/lib/Target/PowerPC/PPCISelLowering.cpp
Commit f05608707c641423a4cd4d5923a44cda153ebbcb by czhengsz
[PowerPC] implement target hook getTgtMemIntrinsic

This patch can make pass recognize Powerpc related memory intrinsics.

Reviewed By: steven.zhang

Differential Revision: https://reviews.llvm.org/D88373
The file was addedllvm/test/Transforms/LoopStrengthReduce/Power/memory-intrinsic.ll
The file was modifiedllvm/lib/Target/PowerPC/PPCTargetTransformInfo.h
The file was modifiedllvm/lib/Target/PowerPC/PPCTargetTransformInfo.cpp
Commit ed46e84c7aaffd847656ac559acb06089096ec33 by czhengsz
[MachineInstr] exclude call instruction in mayAlias

we now get noAlias result for a call instruction and other
load/store/call instructions if we query mayAlias.
This is not right as call instruction is not with mayloadorstore,
but it may alter the memory.

This patch fixes this wrong alias query.

Differential Revision: https://reviews.llvm.org/D87490
The file was modifiedllvm/lib/CodeGen/MachineInstr.cpp
Commit 5a3f6bfe8a71b94728597aee12a4c36949d5f6af by johannes
Reapply "[OpenMP][FIX] Verify compatible types for declare variant calls" D88384

This reapplies D88384 with the minor modification that an assertion was
changed to a regular conditional and graceful exit from
ASTContext::mergeTypes.
The file was modifiedclang/lib/AST/ASTContext.cpp
The file was modifiedclang/lib/Sema/SemaOpenMP.cpp
The file was addedclang/test/AST/ast-dump-openmp-begin-declare-variant_template_3.cpp
The file was modifiedclang/lib/Sema/SemaTemplateInstantiateDecl.cpp
Commit 0c009e092e29a3dff16c5c0522979341fab3be62 by mkazantsev
[Test] Add test showing that we can avoid inserting trunc/zext
The file was modifiedllvm/test/Transforms/IndVarSimplify/widen-loop-comp.ll
Commit edd71db38b0c2292e6a36fb789a3ec3cbde6a023 by yhs
BPF: avoid duplicated globals for CORE relocations

This patch fixed two issues related with relocation globals.
In LLVM, if a global, e.g. with name "g", is created and
conflict with another global with the same name, LLVM will
rename the global, e.g., with a new name "g.2". Since
relocation global name has special meaning, we do not want
llvm to change it, so internally we have logic to check
whether duplication happens or not. If happens, just reuse
the previous global.

The first bug is related to non-btf-id relocation
(BPFAbstractMemberAccess.cpp). Commit 54d9f743c8b0
("BPF: move AbstractMemberAccess and PreserveDIType passes
to EP_EarlyAsPossible") changed ModulePass to FunctionPass,
i.e., handling each function at a time. But still just
one BPFAbstractMemberAccess object is created so module
level de-duplication still possible. Commit 40251fee0084
("[BPF][NewPM] Make BPFTargetMachine properly adjust NPM optimizer
pipeline") made a change to create a BPFAbstractMemberAccess
object per function so module level de-duplication is not
possible any more without going through all module globals.
This patch simply changed the map which holds reloc globals
as class static, so it will be available to all
BPFAbstractMemberAccess objects for different functions.

The second bug is related to btf-id relocation
(BPFPreserveDIType.cpp). Before Commit 54d9f743c8b0, the pass
is a ModulePass, so we have a local variable, incremented for
each instance, and works fine. But after Commit 54d9f743c8b0,
the pass becomes a FunctionPass. Local variable won't work
properly since different functions will start with the same
initial value. Fix the issue by change the local count variable
as static, so it will be truely unique across the whole module
compilation.

Differential Revision: https://reviews.llvm.org/D88942
The file was modifiedllvm/lib/Target/BPF/BPFAbstractMemberAccess.cpp
The file was addedllvm/test/CodeGen/BPF/CORE/btf-id-duplicate.ll
The file was addedllvm/test/CodeGen/BPF/CORE/field-reloc-duplicate.ll
The file was modifiedllvm/lib/Target/BPF/BPFPreserveDIType.cpp
Commit 7fa503ef4aaddc1c31dd36d970aa6609383e1718 by lebedev.ri
[SROA] rewritePartition()/findCommonType(): if uses have conflicting type, try getTypePartition() before falling back to largest integral use type (PR47592)

And another step towards transformss not introducing inttoptr and/or
ptrtoint casts that weren't there already.

In this case, when load/store uses have conflicting types,
instead of falling back to the iN, we can try to use allocated sub-type.
As disscussed, this isn't the best idea overall (we shouldn't rely on
allocated type), but it works fine as a temporary measure.

I've measured, and @ `-O3` as of vanilla llvm test-suite + RawSpeed,
this results in +0.05% more bitcasts, -5.51% less inttoptr
and -1.05% less ptrtoint (at the end of middle-end opt pipeline)

See https://bugs.llvm.org/show_bug.cgi?id=47592

Reviewed By: efriedma

Differential Revision: https://reviews.llvm.org/D88788
The file was modifiedllvm/test/Transforms/SROA/preserve-nonnull.ll
The file was modifiedllvm/test/DebugInfo/ARM/sroa-complex.ll
The file was modifiedllvm/test/Transforms/SROA/ppcf128-no-fold.ll
The file was modifiedllvm/lib/Transforms/Scalar/SROA.cpp
Commit 0fcacefd160494280dc040f4f055db6df695ac12 by Jonas Devlieghere
[lldb] Format unix signal table (NFC)

Restore unix signal table to its original glory and mark it as not to be
clang-formatted.
The file was modifiedlldb/source/Target/UnixSignals.cpp