Changes

Summary

  1. [CMake] Don't use libc++ by default on Windows yet (details)
  2. [mlir][linalg] Prepare fusion on tensors for scalar operands. (details)
  3. [Docs] Fix incorrect return type for example code (details)
  4. [NFC] Reformat MachineValueType (details)
  5. Fix the 4203-Buildbot failure in LLVM Buildbot on llvm-clang-win-x-aarch64 (details)
  6. Prevent generation of dependency on _cxa_guard for static initialization (details)
  7. [MLIR] Make DictionaryAttr::getAs take name as && reference (details)
  8. [llvm] Sync DebugInfo.h with DebugInfoFlags.def (details)
  9. [RISCV] Support CONCAT_VECTORS on scalable masks (details)
  10. [ScalarEvolution] Add test for preserving add overflow flags. (details)
  11. [flang] Define the API for CPU_TIME (details)
  12. Revert "[llvm] Sync DebugInfo.h with DebugInfoFlags.def" (details)
  13. Revert "[lldb] Set return status to failed when adding a command error" (details)
  14. [LoopBoundSplit] Ignore phi node which is not scevable (details)
  15. [ValueTypes] Add missing enum names for MVTs (details)
  16. [compiler-rt] Mark symbolize_stack_fp test unsupported on Arm Thumb (details)
  17. [RISCV] Fix failing RVV MC tests (details)
  18. [mlir][ArmSVE] Add basic mask generation operations (details)
  19. [LTO] Support new PM in ThinLTOCodeGenerator. (details)
  20. [JITLink][MachO] Handle muliple symbols at same offset when splitting C-strings. (details)
  21. [docs] Fix load instructions in chapter 7 of the tutorial (details)
  22. [SROA] Avoid splitting loads/stores with irregular type (details)
  23. Interp.h - AddSubMulHelper - avoid APSInt::toString std::string wrapper. NFCI (details)
  24. JSONNodeDumper.cpp - VisitIntegerLiteral - avoid APSInt::toString std::string wrapper. NFCI (details)
  25. [clang] NFC: Rename rvalue to prvalue (details)
  26. Revert "[SROA] Avoid splitting loads/stores with irregular type" (details)
  27. [clang] NFC: rename SK_CastDerivedToBaseRValue to SK_CastDerivedToBasePRValue (details)
  28. Correct the behavior of va_arg checking in C++ (details)
  29. [ValueTypes][RISCV] Cap RVV fixed-length vectors by size (details)
  30. [AArch64LoadStoreOptimizer] Generate more STPs by renaming registers earlier (details)
  31. [OpenMP][Tools] Fix Archer for MACOS (details)
  32. [OpenMP][Tools] Cleanup memory pool used in Archer (details)
  33. [OpenMP][Tools] Fix Archer handling of task dependencies (details)
  34. [mlir] Expose a function to populate tensor constant bufferization patterns (details)
  35. [Test] Add more elaborate case of symbolic execution of 1-iteration loop (details)
  36. [SLP]Improve gathering of scalar elements. (details)
  37. [clang-cl] Parse /await:strict, new in MSVC 16.10 (details)
  38. [clang] p1099 using-enum feature macro & web page (details)
  39. [X86][SSE] Regenerate slow-pmulld.ll test checks (details)
  40. [X86][SLM] Adjust XMM non-PMULLD throughput costs to half rate. (details)
  41. [OpenCL] Add OpenCL builtin test generator (details)
  42. [x86] add tests for store merging miscompile (PR50623); NFC (details)
  43. [TableGen] Fix ProfileFoldOpInit so that parameters are named consistently [NFC] (details)
  44. [ARM] Fix Machine Outliner LDRD/STRD handling in Thumb mode. (details)
  45. Sanitizers.h - remove MathExtras.h include dependency (details)
  46. [SDAG] fix miscompile from merging stores of different sizes (details)
Commit b413e44200e715c254fa9a41f6a86f8761c9b362 by phosek
[CMake] Don't use libc++ by default on Windows yet

libc++ has issues when used with -fno-exceptions and vcruntime,
don't use it on Windows by default until we address those issues.

Differential Revision: https://reviews.llvm.org/D103941
The file was modifiedclang/cmake/caches/Fuchsia.cmake (diff)
The file was modifiedclang/cmake/caches/Fuchsia-stage2.cmake (diff)
Commit 9c27fa3821dc5c04f5710e64411815893de160ce by gysit
[mlir][linalg] Prepare fusion on tensors for scalar operands.

Adapt fusion on tensors to support structured ops taking scalar operands.

Differential Revision: https://reviews.llvm.org/D103889
The file was modifiedmlir/lib/Dialect/Linalg/Transforms/FusionOnTensors.cpp (diff)
Commit 9751af22c49926840e043fa4c386ba2bfafa2053 by jim
[Docs] Fix incorrect return type for example code
The file was modifiedllvm/docs/Vectorizers.rst (diff)
Commit 20f571dbff530f671de6922fd92af3e301a126c2 by gchatelet
[NFC] Reformat MachineValueType

This is a follow up patch based on https://reviews.llvm.org/D103251#2804016.

Differential Revision: https://reviews.llvm.org/D103893
The file was modifiedllvm/include/llvm/Support/MachineValueType.h (diff)
Commit 699231ab3c7dd8f028d868b103481fa901f3c721 by esme.yi
    Fix the 4203-Buildbot failure in LLVM Buildbot on llvm-clang-win-x-aarch64

    Failure in llvm/test/tools/llvm-objdump/XCOFF/section-headers.test:

    SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes
                 in position 24-25: truncated \xXX escape
The file was modifiedllvm/test/tools/llvm-objdump/XCOFF/section-headers.test (diff)
Commit 414482751452e54710f16bae58458c66298aaf69 by sguelton
Prevent generation of dependency on _cxa_guard for static initialization

This fixes an issue introduced by https://reviews.llvm.org/D70662

Function-scope static initialization are guarded in C++, so we should probably
not use it because it introduces a dependency on __cxa_guard* symbols.
In the context of clang, libasan is linked statically, and it currently needs to
the odd situation where compiling C code with clang and asan requires -lstdc++

Differential Revision: https://reviews.llvm.org/D102475
The file was modifiedcompiler-rt/lib/sanitizer_common/sanitizer_posix_libcdep.cpp (diff)
Commit 41135a4367a75cf02d9873be7bd904456ce77329 by fabian
[MLIR] Make DictionaryAttr::getAs take name as && reference

As a follow-up to the discussion in https://reviews.llvm.org/D103822,
make the templated `DictionaryAttr::getAs` take the name by `&&`
reference and properly forward the argument to the underlying `get`.
The file was modifiedmlir/include/mlir/IR/BuiltinAttributes.td (diff)
Commit 093750dd0be6b0729f8e817766c3d5849545e10c by jan.kratochvil
[llvm] Sync DebugInfo.h with DebugInfoFlags.def

Command to see the differences:
  diff -u <(sed -n 's#^HANDLE_DI_FLAG *([^,]*, *\([^()]*\)) *\(//.*\)\?$#\1#p' <llvm/include/llvm/IR/DebugInfoFlags.def | grep -vw Largest) <(sed -n 's#^ *LLVMDIFlag\([^ ]*\) *= (\?[0-9].*$#\1#p' <llvm/include/llvm-c/DebugInfo.h)

OCaml binding is more seriously out of sync but I have not tried to sync it.

Reviewed By: aprantl

Differential Revision: https://reviews.llvm.org/D103910
The file was modifiedllvm/include/llvm-c/DebugInfo.h (diff)
Commit e8f1f891031385a34f0548803f3bc76ce50544c1 by fraser
[RISCV] Support CONCAT_VECTORS on scalable masks

This patch is a simple fix which registers CONCAT_VECTORS as
custom-lowered for scalable mask vectors. This follows the pattern of
all other scalable-vector types, as the default expansion of
CONCAT_VECTORS cannot handle scalable types, and even if it did it'd go
through the stack and generate worse code.

Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D103896
The file was modifiedllvm/test/CodeGen/RISCV/rvv/setcc-integer-rv64.ll (diff)
The file was modifiedllvm/lib/Target/RISCV/RISCVISelLowering.cpp (diff)
The file was modifiedllvm/test/CodeGen/RISCV/rvv/setcc-fp-rv32.ll (diff)
The file was modifiedllvm/test/CodeGen/RISCV/rvv/setcc-integer-rv32.ll (diff)
The file was modifiedllvm/test/CodeGen/RISCV/rvv/setcc-fp-rv64.ll (diff)
Commit 5c5ae6a661ce01fb4e5f3a645de188028e8c981e by flo
[ScalarEvolution] Add test for preserving add overflow flags.
The file was modifiedllvm/test/Analysis/ScalarEvolution/no-wrap-symbolic-becount.ll (diff)
Commit 35b0ddab0ee8064d23c6f390e30da14e756b5ba6 by diana.picus
[flang] Define the API for CPU_TIME

CPU_TIME takes a single real scalar INTENT(OUT) argument. We can
therefore return a double and let lowering handle casting that to the
precision used for the default real kind.

Differential Revision: https://reviews.llvm.org/D103805
The file was addedflang/runtime/time-intrinsic.h
Commit 09ac4eca665011f056779af6eafdff51f30dc870 by jan.kratochvil
Revert "[llvm] Sync DebugInfo.h with DebugInfoFlags.def"

This reverts commit 093750dd0be6b0729f8e817766c3d5849545e10c.

It broke buildbots, goint to investigate it more.
The file was modifiedllvm/include/llvm-c/DebugInfo.h (diff)
Commit db93e4e70aa453e5ba04ba0d9e01f581882b6c81 by david.spickett
Revert "[lldb] Set return status to failed when adding a command error"

This reverts commit e05b03cf4f45ac5ee63c59a3464e7d484884645c.

While I investigate a register test failure:
http://green.lab.llvm.org/green/blue/organizations/jenkins/lldb-cmake/detail/lldb-cmake/32693/pipeline/
The file was addedlldb/test/Shell/Commands/command-backtrace.test
The file was modifiedlldb/test/API/commands/register/register/register_command/TestRegisters.py (diff)
The file was removedlldb/test/Shell/Commands/command-backtrace-parser-1.test
The file was modifiedlldb/source/Interpreter/CommandReturnObject.cpp (diff)
The file was removedlldb/test/Shell/Commands/command-backtrace-parser-2.test
Commit 8eee02020b92d986b6d089dbe5f1e312ecb4575c by jingu.kang
[LoopBoundSplit] Ignore phi node which is not scevable

There was a bug in LoopBoundSplit. The pass should ignore phi node which is not
scevable.

Differential Revision: https://reviews.llvm.org/D103913
The file was modifiedllvm/test/Transforms/LoopBoundSplit/loop-bound-split.ll (diff)
The file was modifiedllvm/lib/Transforms/Scalar/LoopBoundSplit.cpp (diff)
Commit 80d556441adca45c0ad82c9463ed77bc25399f2b by fraser
[ValueTypes] Add missing enum names for MVTs

These types are (presumably) never used in the generated TableGen files.
The `default` switch case silences any compiler warnings for these
missing types so it's easy to miss.

Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D103883
The file was modifiedllvm/utils/TableGen/CodeGenTarget.cpp (diff)
Commit 11ad9e31eb3b11d8996c31084c617245b5af1b87 by david.spickett
[compiler-rt] Mark symbolize_stack_fp test unsupported on Arm Thumb

The new test `symbolize_stack_fp.cpp` added in
https://reviews.llvm.org/D102046 assumes that
we can fall back to the fast unwinder.

This is not the case for Thumb and the test is currently
failing on our v7 thumb bot:
https://lab.llvm.org/buildbot/#/builders/26/builds/2096

Skip the test if we're building for a Thumb target.

Reviewed By: MaskRay

Differential Revision: https://reviews.llvm.org/D103512
The file was modifiedcompiler-rt/test/sanitizer_common/TestCases/Linux/symbolize_stack_fp.cpp (diff)
The file was modifiedcompiler-rt/test/sanitizer_common/lit.common.cfg.py (diff)
The file was modifiedcompiler-rt/test/sanitizer_common/lit.site.cfg.py.in (diff)
Commit 292f4197249bec40143c88fe3fea50d038676889 by fraser
[RISCV] Fix failing RVV MC tests

I believe these failures were introduced by D103790's changes to the
VType formatting found in vsetvli/vsetivli instructions.
The file was modifiedllvm/test/MC/RISCV/rvv/vsetvl.s (diff)
The file was modifiedllvm/test/MC/RISCV/rvv/snippet.s (diff)
Commit f880bd261f4e13d4d58a75886a2942f05783c7de by javier.setoain
[mlir][ArmSVE] Add basic mask generation operations

These `arm_sve.cmp` functions are needed to generate scalable vector
masks as long as scalable vectors are not part of the standard types.
Once in standard, these can be removed and `std.cmp` can be used
instead.

Differential Revision: https://reviews.llvm.org/D103473
The file was modifiedmlir/lib/Dialect/ArmSVE/IR/CMakeLists.txt (diff)
The file was modifiedmlir/include/mlir/Dialect/StandardOps/IR/Ops.td (diff)
The file was modifiedmlir/test/Dialect/ArmSVE/legalize-for-llvm.mlir (diff)
The file was modifiedmlir/include/mlir/Dialect/ArmSVE/ArmSVEDialect.h (diff)
The file was modifiedmlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp (diff)
The file was modifiedmlir/include/mlir/Dialect/StandardOps/IR/StandardOpsBase.td (diff)
The file was modifiedmlir/lib/Dialect/ArmSVE/Transforms/LegalizeForLLVMExport.cpp (diff)
The file was modifiedmlir/test/Dialect/ArmSVE/roundtrip.mlir (diff)
The file was modifiedmlir/include/mlir/Dialect/ArmSVE/ArmSVE.td (diff)
The file was modifiedmlir/lib/Dialect/ArmSVE/IR/ArmSVEDialect.cpp (diff)
The file was modifiedmlir/test/Target/LLVMIR/arm-sve.mlir (diff)
Commit e978f6bc97064603a5665a6797d6e613a231479a by flo
[LTO] Support new PM in ThinLTOCodeGenerator.

This patch adds initial support for using the new pass manager when
doing ThinLTO via libLTO.

Reviewed By: steven_wu

Differential Revision: https://reviews.llvm.org/D102627
The file was modifiedllvm/test/ThinLTO/X86/newpm-basic.ll (diff)
The file was modifiedllvm/tools/llvm-lto/llvm-lto.cpp (diff)
The file was modifiedllvm/test/ThinLTO/X86/diagnostic-handler-remarks-with-hotness.ll (diff)
The file was modifiedllvm/lib/LTO/ThinLTOCodeGenerator.cpp (diff)
The file was modifiedllvm/include/llvm/LTO/legacy/ThinLTOCodeGenerator.h (diff)
The file was modifiedllvm/test/ThinLTO/X86/diagnostic-handler-remarks.ll (diff)
Commit 82f8aef3deb196ad323a3ef57c03276c6e93a246 by Lang Hames
[JITLink][MachO] Handle muliple symbols at same offset when splitting C-strings.

The C-string section splitting support added in f9649d123db triggered an assert
("Duplicate canonical symbol at address") when multiple symbols were defined at
the the same offset within a C-string block (this triggered on arm64, where we
always add a block start symbol). The bug was caused by a failure to update the
record of the last canonical symbol address. The fix was to maintain this record
correctly, and move the auto-generation of the block-start symbol above the
handling for symbols defined in the object itself so that all symbols
(auto-generated and defined) are processed in address order.
The file was modifiedllvm/lib/ExecutionEngine/JITLink/MachOLinkGraphBuilder.cpp (diff)
Commit 391f9ef1aa8b28ef8bad4486576477c0700e43e9 by jim
[docs] Fix load instructions in chapter 7 of the tutorial

Loads in the first half of the chapter are missing the type argument.

Patched By: klao (Mihaly Barasz)

Reviewed By: Jim

Differential Revision: https://reviews.llvm.org/D90326
The file was modifiedllvm/docs/tutorial/MyFirstLanguageFrontend/LangImpl07.rst (diff)
Commit 905f4eb537c118783969fded19e96fe6504c2956 by thatlemon
[SROA] Avoid splitting loads/stores with irregular type

Upon encountering loads/stores on types whose size is not a multiple of 8 bits the SROA pass would either trip an assertion or use logic that was not meant to work with such irregularly-sized types.

Reviewed By: aeubanks

Differential Revision: https://reviews.llvm.org/D99435
The file was modifiedllvm/lib/Transforms/Scalar/SROA.cpp (diff)
The file was addedllvm/test/Transforms/SROA/irregular-type.ll
Commit d806d11b14e1db7d5c5986d563e74ca972f0e5e6 by llvm-dev
Interp.h - AddSubMulHelper - avoid APSInt::toString std::string wrapper. NFCI

Pulled out of D103888 - use the underlying SmallString version directly
The file was modifiedclang/lib/AST/Interp/Interp.h (diff)
Commit f3fd36e590f4ca36e466801bee40497714df895c by llvm-dev
JSONNodeDumper.cpp - VisitIntegerLiteral - avoid APSInt::toString std::string wrapper. NFCI

Pulled out of D103888 - use the underlying SmallString version directly
The file was modifiedclang/lib/AST/JSONNodeDumper.cpp (diff)
Commit aef5d8fdc7d0d348125d5ecf4a13be5888eb1654 by mizvekov
[clang] NFC: Rename rvalue to prvalue

This renames the expression value categories from rvalue to prvalue,
keeping nomenclature consistent with C++11 onwards.

C++ has the most complicated taxonomy here, and every other language
only uses a subset of it, so it's less confusing to use the C++ names
consistently, and mentally remap to the C names when working on that
context (prvalue -> rvalue, no xvalues, etc).

Renames:
* VK_RValue -> VK_PRValue
* Expr::isRValue -> Expr::isPRValue
* SK_QualificationConversionRValue -> SK_QualificationConversionPRValue
* JSON AST Dumper Expression nodes value category: "rvalue" -> "prvalue"

Signed-off-by: Matheus Izvekov <mizvekov@gmail.com>

Reviewed By: rsmith

Differential Revision: https://reviews.llvm.org/D103720
The file was modifiedclang/test/AST/ast-dump-expr-json.m (diff)
The file was modifiedclang/lib/Sema/SemaStmt.cpp (diff)
The file was modifiedclang/lib/CodeGen/CGOpenMPRuntime.cpp (diff)
The file was modifiedclang/test/AST/ast-dump-if-json.cpp (diff)
The file was modifiedclang/test/AST/ast-dump-record-definition-data-json.cpp (diff)
The file was modifiedclang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp (diff)
The file was modifiedclang/test/AST/multistep-explicit-cast-json.c (diff)
The file was modifiedclang/test/AST/ast-dump-decl-json.m (diff)
The file was modifiedclang/lib/Sema/SemaOverload.cpp (diff)
The file was modifiedclang/lib/Sema/SemaExpr.cpp (diff)
The file was modifiedclang/test/AST/ast-dump-decl-json.c (diff)
The file was modifiedclang/lib/Sema/SemaPseudoObject.cpp (diff)
The file was modifiedclang/lib/Sema/SemaInit.cpp (diff)
The file was modifiedclang/lib/CodeGen/CGExpr.cpp (diff)
The file was modifiedclang/test/AST/ast-dump-stmt-json.c (diff)
The file was modifiedclang/include/clang/AST/ExprObjC.h (diff)
The file was modifiedclang/lib/AST/Expr.cpp (diff)
The file was modifiedclang/lib/AST/ExprCXX.cpp (diff)
The file was modifiedclang/lib/Sema/SemaLookup.cpp (diff)
The file was modifiedclang/lib/AST/ExprClassification.cpp (diff)
The file was modifiedclang/lib/CodeGen/CGBlocks.cpp (diff)
The file was modifiedclang/lib/Sema/SemaLambda.cpp (diff)
The file was modifiedclang/test/AST/ast-dump-temporaries-json.cpp (diff)
The file was modifiedclang/lib/CodeGen/CGExprScalar.cpp (diff)
The file was modifiedclang/test/AST/multistep-explicit-cast-json.cpp (diff)
The file was modifiedclang/lib/AST/TextNodeDumper.cpp (diff)
The file was modifiedclang/lib/Sema/SemaObjCProperty.cpp (diff)
The file was modifiedclang/lib/Sema/SemaChecking.cpp (diff)
The file was modifiedclang/lib/Sema/SemaExprMember.cpp (diff)
The file was modifiedclang/lib/Sema/SemaOpenMP.cpp (diff)
The file was modifiedclang/lib/StaticAnalyzer/Checkers/MoveChecker.cpp (diff)
The file was modifiedclang/test/AST/ast-dump-types-errors-json.cpp (diff)
The file was modifiedclang/lib/Frontend/Rewrite/RewriteObjC.cpp (diff)
The file was modifiedclang/lib/Sema/SemaExprCXX.cpp (diff)
The file was modifiedclang/test/AST/ast-dump-stmt-json.cpp (diff)
The file was modifiedclang/lib/CodeGen/CGStmtOpenMP.cpp (diff)
The file was modifiedclang/lib/AST/ExprConcepts.cpp (diff)
The file was modifiedclang/include/clang/Basic/Specifiers.h (diff)
The file was modifiedclang/lib/Analysis/ThreadSafety.cpp (diff)
The file was modifiedclang/lib/Sema/SemaCast.cpp (diff)
The file was modifiedclang/lib/AST/ExprConstant.cpp (diff)
The file was modifiedclang/lib/StaticAnalyzer/Core/CallEvent.cpp (diff)
The file was modifiedclang/include/clang/AST/ExprCXX.h (diff)
The file was modifiedclang-tools-extra/clang-tidy/misc/UniqueptrResetReleaseCheck.cpp (diff)
The file was modifiedclang/lib/Sema/SemaDeclAttr.cpp (diff)
The file was modifiedclang/lib/Sema/SemaTemplateInstantiate.cpp (diff)
The file was modifiedclang/test/AST/ast-dump-expr-json.cpp (diff)
The file was modifiedclang/lib/Sema/SemaDecl.cpp (diff)
The file was modifiedclang/lib/Sema/SemaStmtAsm.cpp (diff)
The file was modifiedclang/test/AST/ast-dump-objc-arc-json.m (diff)
The file was modifiedclang/lib/Sema/Sema.cpp (diff)
The file was modifiedclang/lib/Sema/SemaType.cpp (diff)
The file was modifiedclang/lib/AST/JSONNodeDumper.cpp (diff)
The file was modifiedclang/include/clang/Sema/Initialization.h (diff)
The file was modifiedclang/test/AST/ast-dump-records-json.cpp (diff)
The file was modifiedclang/test/AST/ast-dump-stmt-json.m (diff)
The file was modifiedclang/include/clang/Sema/Sema.h (diff)
The file was modifiedclang/test/AST/ast-dump-template-decls-json.cpp (diff)
The file was modifiedclang/lib/Sema/SemaCoroutine.cpp (diff)
The file was modifiedclang/lib/Sema/SemaFixItUtils.cpp (diff)
The file was modifiedclang/lib/Sema/SemaTemplateInstantiateDecl.cpp (diff)
The file was modifiedclang/test/AST/ast-dump-expr-json.c (diff)
The file was modifiedclang/lib/Sema/SemaExprObjC.cpp (diff)
The file was modifiedclang/lib/Sema/TreeTransform.h (diff)
The file was modifiedclang/lib/CodeGen/CGObjC.cpp (diff)
The file was modifiedclang/lib/Analysis/BodyFarm.cpp (diff)
The file was modifiedclang/test/AST/ast-dump-funcs-json.cpp (diff)
The file was modifiedclang/lib/AST/ExprObjC.cpp (diff)
The file was modifiedclang/lib/Sema/SemaDeclCXX.cpp (diff)
The file was modifiedclang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp (diff)
The file was modifiedclang/lib/Sema/SemaTemplate.cpp (diff)
The file was modifiedclang/lib/AST/DeclCXX.cpp (diff)
The file was modifiedclang/lib/Frontend/Rewrite/RewriteModernObjC.cpp (diff)
The file was modifiedclang/include/clang/AST/Expr.h (diff)
Commit 205cde63c70e017a71d1ec06377421f7733f2ad5 by thakis
Revert "[SROA] Avoid splitting loads/stores with irregular type"

This reverts commit 905f4eb537c118783969fded19e96fe6504c2956.
Breaks check-llvm on most (all?) bots, see https://reviews.llvm.org/D99435
The file was removedllvm/test/Transforms/SROA/irregular-type.ll
The file was modifiedllvm/lib/Transforms/Scalar/SROA.cpp (diff)
Commit c25572bf2993438f24b57d859d072e8b2aa975d2 by mizvekov
[clang] NFC: rename SK_CastDerivedToBaseRValue to SK_CastDerivedToBasePRValue

This is a follow up to the "rvalue-to-prvalue" rename at D103720.

Signed-off-by: Matheus Izvekov <mizvekov@gmail.com>

Depends on D103720

Reviewed By: rsmith

Differential Revision: https://reviews.llvm.org/D103933
The file was modifiedclang/lib/Sema/SemaInit.cpp (diff)
The file was modifiedclang/include/clang/Sema/Initialization.h (diff)
Commit c92f505346b80fd053ef191bbc66810c9d564b0c by aaron
Correct the behavior of va_arg checking in C++

Clang checks whether the type given to va_arg will automatically cause
undefined behavior, but this check was issuing false positives for
enumerations in C++. The issue turned out to be because
typesAreCompatible() in C++ checks whether the types are *the same*, so
this uses custom logic if the type compatibility check fails.

This issue was found by a user on code like:

typedef enum {
  CURLINFO_NONE,
  CURLINFO_EFFECTIVE_URL,
  CURLINFO_LASTONE = 60
} CURLINFO;

...

__builtin_va_arg(list, CURLINFO); // false positive warning

Given that C++ defers to C for the rules around va_arg, the behavior
should be the same in both C and C++ and not diagnose because int and
CURLINFO are "compatible enough" types for va_arg.
The file was modifiedclang/lib/Sema/SemaExpr.cpp (diff)
The file was modifiedclang/test/SemaCXX/varargs.cpp (diff)
Commit 502edebd9d6eb4665add9fd5edaa2dd1b1b24298 by fraser
[ValueTypes][RISCV] Cap RVV fixed-length vectors by size

This patch changes RVV's policy for its supported list of fixed-length
vector types by capping by vector size rather than element count. Now
all 1024-byte vectors (of supported element types) are supported, rather
than all 256-element vectors.

This is a more natural fit for the architecture, and allows us to, for
example, improve the support for vector bitcasts.

This change necessitated the adding of some new simple types to avoid
"regressing" on the number of currently-supported vectors. We round out
the 1024-byte types by adding `v512i8`, `v1024i8`, `v512i16` and
`v512f16`.

Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D103884
The file was modifiedllvm/test/CodeGen/RISCV/rvv/fixed-vectors-bitcast-large-vector.ll (diff)
The file was modifiedllvm/lib/CodeGen/ValueTypes.cpp (diff)
The file was modifiedllvm/utils/TableGen/CodeGenTarget.cpp (diff)
The file was modifiedllvm/include/llvm/CodeGen/ValueTypes.td (diff)
The file was modifiedllvm/test/CodeGen/RISCV/rvv/interleave-crash.ll (diff)
The file was modifiedllvm/include/llvm/Support/MachineValueType.h (diff)
The file was modifiedllvm/lib/Target/RISCV/RISCVISelLowering.cpp (diff)
Commit d96ea46629803641038ebe46d8cd512f8cf7e20f by meera.nakrani
[AArch64LoadStoreOptimizer] Generate more STPs by renaming registers earlier

Our initial motivating case was memcpy's with alignments > 16. The
loads/stores, to which small memcpy's expand, are kept together in
several places so that we get a sequence like this for a 64 bit copy:
LD w0
LD w1
ST w0
ST w1
The load/store optimiser can generate a LDP/STP w0, w1 from this because
the registers read/written are consecutive. In our case however, the
sequence is optimised during ISel, resulting in:
LD w0
ST w0
LD w0
ST w0
This instruction reordering allows reuse of registers. Since the registers
are no longer consecutive (i.e. they are the same), it inhibits LDP/STP
creation. The approach here is to perform renaming:
LD w0
ST w0
LD w1
ST w1
to enable the folding of the stores into a STP. We do not yet generate
the LDP due to a limitation in the renaming implementation, but plan to
look at that in a follow-up so that we fully support this case. While
this was initially motivated by certain memcpy's, this is a general
approach and thus is beneficial for other cases too, as can be seen
in some test changes.

Differential Revision: https://reviews.llvm.org/D103597
The file was modifiedllvm/test/CodeGen/AArch64/ldst-opt.ll (diff)
The file was modifiedllvm/test/CodeGen/AArch64/stp-opt-with-renaming.mir (diff)
The file was modifiedllvm/test/CodeGen/AArch64/consthoist-gep.ll (diff)
The file was modifiedllvm/test/CodeGen/AArch64/GlobalISel/byval-call.ll (diff)
The file was modifiedllvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp (diff)
Commit 82e4e505315b8df27e82c0e1cb9d5eb1aa7d45da by protze
[OpenMP][Tools] Fix Archer for MACOS

Archer uses weak symbol overloads of TSan functions to enable loading the tool
even if the application is not built with TSan. For MACOS the tool collects
the function pointer at runtime.
When adding the function entry/exit markers, we missed to add the functions
in the MACOS codepath.
This patch also replaces the repeated function lookup by a single initial
function lookup and fixes the disabling logic in RunningOnValgrind.

Differential Revision: https://reviews.llvm.org/D103607
The file was modifiedopenmp/tools/archer/ompt-tsan.cpp (diff)
Commit 08d8f1a958bd8be681e3e1f346be80818a83a556 by protze
[OpenMP][Tools] Cleanup memory pool used in Archer

The main motivation for reusing objects is that it helps to avoid creating and
leaking synchronization clocks in TSan. The reused object will reuse the
synchronization clock in TSan.

Before, new and delete operators were overloaded to get and return memory for
the object from/to the object pool.
This patch replaces the operator overloading with explicit static New/Delete
functions.

Objects for parallel regions and implicit tasks will always be recruited and
returned to the thread-local object pool. Only for explicit task, there is a
chance that an other thread completes the task and will free the object. This
patch optimizes the thread-local New/Delete calls by avoiding locks and only
lock if the pool is empty. Remote threads return the object into a separate
queue.

The chunk size for allocations is now decided based on page size. The objects
will also be aligned to cache lines avoiding false sharing.

This is the first patch in a series to provide better tasking support.

Differential Revision: https://reviews.llvm.org/D103606
The file was modifiedopenmp/tools/archer/tests/lit.cfg (diff)
The file was modifiedopenmp/tools/archer/README.md (diff)
The file was modifiedopenmp/tools/archer/ompt-tsan.cpp (diff)
Commit 639b3979310d8cec82b9b0a3ad3e64566244717f by protze
[OpenMP][Tools] Fix Archer handling of task dependencies

The current handling of dependencies in Archer has two flaws:

- annotation of dependency synchronization is not limited to sibling tasks
- annotation of in/out dependencies is based on the assumption, that dependency
  variables will rarely be byte-sized variables.

This patch introduces a map in the generating task to manage the dependency
variables for the child tasks. The map is only accesses from the generating
task, so no locking is necessary. This also limits the dependency-based
synchronization to sibling tasks.
This patch also introduces proper handling for new dependency types such as
mutexinoutset and inoutset.

Differential Revision: https://reviews.llvm.org/D103608
The file was modifiedopenmp/tools/archer/ompt-tsan.cpp (diff)
Commit c0db8d50ca3ceb1301b2ade2fb86c591a5b64e5c by benny.kra
[mlir] Expose a function to populate tensor constant bufferization patterns

This makes it easier to use it from other bufferization passes.

Differential Revision: https://reviews.llvm.org/D103838
The file was modifiedmlir/include/mlir/Dialect/StandardOps/Transforms/Passes.h (diff)
The file was modifiedmlir/lib/Dialect/StandardOps/Transforms/TensorConstantBufferize.cpp (diff)
Commit 0120e6c295e42d3b9ed2cd125b1c9056a59fbcf6 by mkazantsev
[Test] Add more elaborate case of symbolic execution of 1-iteration loop
The file was modifiedllvm/test/Transforms/LoopDeletion/eval_first_iteration.ll (diff)
Commit a0086add2e52a82dd83114f458c10e2e4bdd15ac by a.bataev
[SLP]Improve gathering of scalar elements.

1. Better sorting of scalars to be gathered. Trying to insert
   constants/arguments/instructions-out-of-loop at first and only then
   the instructions which are inside the loop. It improves hoisting of
   invariant insertelements instructions.
2. Better detection of shuffle candidates in gathering function.
3. The cost of insertelement for constants is 0.

Part of D57059.

Differential Revision: https://reviews.llvm.org/D103458
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/PR39774.ll (diff)
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/pr35497.ll (diff)
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/reduction2.ll (diff)
The file was modifiedllvm/lib/Transforms/Vectorize/SLPVectorizer.cpp (diff)
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/shrink_after_reorder.ll (diff)
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/crash_lencod.ll (diff)
The file was modifiedllvm/test/Transforms/SLPVectorizer/AArch64/insertelement-inseltpoison.ll (diff)
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/crash_exceed_scheduling.ll (diff)
The file was modifiedllvm/test/Transforms/SLPVectorizer/slp-max-phi-size.ll (diff)
The file was modifiedllvm/test/Transforms/SLPVectorizer/AArch64/insertelement.ll (diff)
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/phi_landingpad.ll (diff)
The file was modifiedllvm/test/Transforms/SLPVectorizer/SystemZ/pr34619.ll (diff)
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/matched-shuffled-entries.ll (diff)
The file was modifiedllvm/test/Transforms/SLPVectorizer/slp-umax-rdx-matcher-crash.ll (diff)
The file was modifiedllvm/test/Transforms/SLPVectorizer/AArch64/trunc-insertion.ll (diff)
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/geps-non-pow-2.ll (diff)
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/jumbled-load-multiuse.ll (diff)
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/value-bug-inseltpoison.ll (diff)
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/commutativity.ll (diff)
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/hoist.ll (diff)
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/phi3.ll (diff)
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/remark_extract_broadcast.ll (diff)
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/partail.ll (diff)
The file was modifiedllvm/test/Transforms/SLPVectorizer/AArch64/vectorize-free-extracts-inserts.ll (diff)
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/horizontal-minmax.ll (diff)
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/jumbled-load-used-in-phi.ll (diff)
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/tiny-tree.ll (diff)
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/crash_mandeltext.ll (diff)
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/reorder_repeated_ops.ll (diff)
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/value-bug.ll (diff)
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/crash_smallpt.ll (diff)
Commit 64dbd649cf661cbca5e8670d220aec40d6892572 by hans
[clang-cl] Parse /await:strict, new in MSVC 16.10
The file was modifiedclang/test/Driver/cl-options.c (diff)
The file was modifiedclang/include/clang/Driver/Options.td (diff)
Commit c1cd743519af3978b944df88f57c6e523caa10dc by nathan
[clang] p1099 using-enum feature macro & web page

This completes the series implementing p1099, by adding the feature
macro and updating the web page.

Differential Revision: https://reviews.llvm.org/D102242
The file was modifiedclang/lib/Frontend/InitPreprocessor.cpp (diff)
The file was modifiedclang/test/Lexer/cxx-features.cpp (diff)
The file was modifiedclang/www/cxx_status.html (diff)
Commit 8ffeb5c47d94d8f8eafc4e986fe47578b716c1dc by llvm-dev
[X86][SSE] Regenerate slow-pmulld.ll test checks
The file was modifiedllvm/test/CodeGen/X86/slow-pmulld.ll (diff)
Commit 630820bafc6866ce1efa4f1e2c4b11f6250eae9c by llvm-dev
[X86][SLM] Adjust XMM non-PMULLD throughput costs to half rate.

Match what's reported in the costs table, Agner's tables and the Intel AOM
The file was modifiedllvm/test/CodeGen/X86/slow-pmulld.ll (diff)
The file was modifiedllvm/lib/Target/X86/X86ScheduleSLM.td (diff)
The file was modifiedllvm/test/tools/llvm-mca/X86/SLM/resources-ssse3.s (diff)
The file was modifiedllvm/test/tools/llvm-mca/X86/SLM/resources-sse41.s (diff)
The file was modifiedllvm/test/tools/llvm-mca/X86/SLM/resources-sse2.s (diff)
Commit 8866793b4e0abd31e4f57abf9ba832d691a3a3e1 by sven.vanhaastregt
[OpenCL] Add OpenCL builtin test generator

Add a new clang-tblgen flag `-gen-clang-opencl-builtin-tests` that
generates a .cl file containing calls to every builtin function
defined in the .td input.

This patch does not add any use of the new flag yet, so the only way
to obtain a generated test file is through a manual invocation of
clang-tblgen.  A test making use of this emitter will be added in a
followup commit.

Differential Revision: https://reviews.llvm.org/D97869
The file was modifiedclang/utils/TableGen/ClangOpenCLBuiltinEmitter.cpp (diff)
The file was modifiedclang/utils/TableGen/TableGen.cpp (diff)
The file was modifiedclang/utils/TableGen/TableGenBackends.h (diff)
Commit 2ef81cb297954cdbc2eca2f204a5ecba4ec1ccd8 by spatel
[x86] add tests for store merging miscompile (PR50623); NFC
The file was modifiedllvm/test/CodeGen/X86/stores-merging.ll (diff)
Commit ef8df920fbbc945dce6aeec717629ddde90a8ebe by Paul C. Anagnostopoulos
[TableGen] Fix ProfileFoldOpInit so that parameters are named consistently [NFC]

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

Differential Revision: https://reviews.llvm.org/D103823
The file was modifiedllvm/lib/TableGen/Record.cpp (diff)
Commit 6c78dbd4ca1f2c25cdc276d646c7920afe856ca3 by yvan.roux
[ARM] Fix Machine Outliner LDRD/STRD handling in Thumb mode.

This is a fix for PR50481

Immediate values for AddrModeT2_i8s4 are already scaled in MCinst operand.
This patch changes the number of bits and scale factor to reflect that
state when checking stack offset status. AddrModeT2_i7s[2|4] also have
this particularity but since MVE instructions are not outlined, just move
these cases to the unhandled ones.

Differential Revision: https://reviews.llvm.org/D103167
The file was modifiedllvm/lib/Target/ARM/ARMBaseInstrInfo.cpp (diff)
The file was modifiedllvm/test/CodeGen/ARM/machine-outliner-stack-fixup-thumb.mir (diff)
Commit 206a66de5902b2b6dc0c62c4a25526d7e7f24186 by llvm-dev
Sanitizers.h - remove MathExtras.h include dependency

The MathExtras.h header is included purely for the countPopulation() method - by moving this into Sanitizers.cpp we can remove the use of this costly header.

We only ever use isPowerOf2() / countPopulation() inside asserts so this shouldn't have any performance effects on production code.

Differential Revision: https://reviews.llvm.org/D103953
The file was modifiedclang/include/clang/Basic/Sanitizers.h (diff)
The file was modifiedclang/lib/Basic/Sanitizers.cpp (diff)
Commit dd763ac79196b3d3bc0370b9dbd35e0c083e52a4 by spatel
[SDAG] fix miscompile from merging stores of different sizes

As shown in:
https://llvm.org/PR50623
...and the similar tests here, we were not accounting for
store merging of different sizes that do not cover the
entire range of the wide value to be stored.

This is the easy fix: just make sure that all of the
original stores are the same size, so when we calculate
the wide width, it's a simple N * M check.

This still allows all of the motivating optimizations from:
D86420 / 54a5dd485c4d
D87112 / 7a06b166b1af

We could enhance this code to track individual bytes and
allow merging multiple sizes.
The file was modifiedllvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp (diff)
The file was modifiedllvm/test/CodeGen/X86/stores-merging.ll (diff)