SuccessChanges

Summary

  1. [xray] Add xray-ignore-loops option (details)
  2. [clang][xray] Add -fxray-ignore-loops option (details)
  3. [xray] Allow instrumenting only function entry and/or only function exit (details)
  4. Pass length of string in Go binding of CreateCompileUnit (details)
  5. [mlir] [VectorOps] Rename Utils.h into VectorUtils.h (details)
  6. [InstSimplify] add test for select of FP constants; NFC (details)
  7. [InstSimplify] add test for select of vector constants; NFC (details)
  8. hwasan: Move .note.hwasan.globals note to hwasan.module_ctor comdat. (details)
  9. [libc++] Optimize / partially inline basic_string copy constructor (details)
  10. [mlir][Linalg] Extend linalg vectorization to MatmulOp (details)
  11. [lldb/Docs] Fix formatting for the variable formatting page (details)
  12. [libcxx] Introduce LinuxRemoteTI for remote testing (details)
  13. [CMake] Use LinuxRemoteTI instead of LinuxLocalTI in CrossWinToARMLinux (details)
  14. [profile] Support counter relocation at runtime (details)
  15. hwasan: Remove dead code. NFCI. (details)
  16. [CMake] Prefer multi-target variables over generic target variables in (details)
  17. [MemDepAnalysis/VNCoercion] Move static method to its only use. [NFCI] (details)
  18. Merge memtag instructions with adjacent stack slots. (details)
  19. [gn build] fix build after 22af2cbefc (details)
  20. [gn build] Port d3db13af7e5 (details)
Commit 7628e474a5916ed8a43c015248443f4c03077509 by smeenai
[xray] Add xray-ignore-loops option
XRay allows tuning by minimum function size, but also always instruments
functions with loops in them.  If the minimum function size is set to a
large value the loop instrumention ends up causing most functions to be
instrumented anyway.  This adds a new flag, xray-ignore-loops, to
disable the loop detection logic.
Differential Revision: https://reviews.llvm.org/D72659
The file was modifiedllvm/lib/CodeGen/XRayInstrumentation.cpp
The file was addedllvm/test/CodeGen/X86/xray-ignore-loop-detection.ll
The file was modifiedllvm/test/CodeGen/X86/xray-loop-detection.ll
Commit 1d62be244108547558c6d42ddcf2e4a7f3c6dd03 by smeenai
[clang][xray] Add -fxray-ignore-loops option
XRay allows tuning by minimum function size, but also always instruments
functions with loops in them. If the minimum function size is set to a
large value the loop instrumention ends up causing most functions to be
instrumented anyway. This adds a new flag, -fxray-ignore-loops, to
disable the loop detection logic.
Differential Revision: https://reviews.llvm.org/D72873
The file was modifiedclang/lib/Frontend/CompilerInvocation.cpp
The file was modifiedclang/include/clang/Basic/CodeGenOptions.def
The file was addedclang/test/CodeGen/xray-ignore-loops.cpp
The file was modifiedclang/include/clang/Driver/Options.td
The file was modifiedclang/lib/CodeGen/CodeGenFunction.cpp
Commit 97ba483026cdcb31bbf6f85ea09d5638a55c651e by smeenai
[xray] Allow instrumenting only function entry and/or only function exit
Extend -fxray-instrumentation-bundle to split function-entry and
function-exit into two separate options, so that it is possible to
instrument only function entry or only function exit.  For use cases
that only care about one or the other this will save significant
overhead and code size.
Differential Revision: https://reviews.llvm.org/D72890
The file was modifiedclang/test/CodeGen/xray-instrumentation-bundles.cpp
The file was modifiedclang/lib/CodeGen/CodeGenFunction.cpp
The file was addedllvm/test/CodeGen/X86/xray-partial-instrumentation-skip-exit.ll
The file was modifiedclang/include/clang/Basic/XRayInstr.h
The file was modifiedclang/include/clang/Driver/Options.td
The file was modifiedclang/lib/Driver/XRayArgs.cpp
The file was addedllvm/test/CodeGen/AArch64/xray-partial-instrumentation-skip-entry.ll
The file was addedllvm/test/CodeGen/X86/xray-partial-instrumentation-skip-entry.ll
The file was modifiedclang/lib/Basic/XRayInstr.cpp
The file was modifiedllvm/lib/CodeGen/XRayInstrumentation.cpp
The file was addedllvm/test/CodeGen/AArch64/xray-partial-instrumentation-skip-exit.ll
Commit 63c4261720a76e7bd5b11e5eec735afe14d8a183 by Adrian Prantl
Pass length of string in Go binding of CreateCompileUnit
The file was modifiedllvm/bindings/go/llvm/dibuilder.go
Commit 0361a961c2417756eaf28d3debe484e84d484f04 by ajcbik
[mlir] [VectorOps] Rename Utils.h into VectorUtils.h
Summary: First step towards the consolidation of a lot of vector related
utilities that are now all over the place
(or even duplicated).
Reviewers: nicolasvasilache, andydavis1
Reviewed By: nicolasvasilache, andydavis1
Subscribers: merge_guards_bot, mehdi_amini, rriddle, jpienaar, burmako,
shauheen, antiagainst, arpith-jacob, mgester, lucyrfox, liufengdb,
llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D72955
The file was addedmlir/include/mlir/Dialect/VectorOps/VectorUtils.h
The file was modifiedmlir/lib/Transforms/Vectorize.cpp
The file was modifiedmlir/lib/Analysis/VectorAnalysis.cpp
The file was modifiedmlir/test/lib/Transforms/TestVectorizationUtils.cpp
The file was removedmlir/include/mlir/Dialect/VectorOps/Utils.h
The file was modifiedmlir/lib/Dialect/VectorOps/VectorTransforms.cpp
Commit 3ae38d95e6c0b754a26c99bf930a46cac3adbf8b by spatel
[InstSimplify] add test for select of FP constants; NFC
The file was modifiedllvm/test/Transforms/InstSimplify/select.ll
Commit a8b9c93601112ceb846904a81e46fd52c98bff1c by spatel
[InstSimplify] add test for select of vector constants; NFC
The file was modifiedllvm/test/Transforms/InstSimplify/select.ll
Commit cd40bd0a32e29fb62c89b120adbc89a847443da3 by peter
hwasan: Move .note.hwasan.globals note to hwasan.module_ctor comdat.
As of D70146 lld GCs comdats as a group and no longer considers notes in
comdats to be GC roots, so we need to move the note to a comdat with a
GC root section (.init_array) in order to prevent lld from discarding
the note.
Differential Revision: https://reviews.llvm.org/D72936
The file was modifiedllvm/test/Instrumentation/HWAddressSanitizer/globals.ll
The file was modifiedllvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp
Commit a8a9c8e0a11abc9ed4ed78fed528334371fedf87 by eric
[libc++] Optimize / partially inline basic_string copy constructor
Splits copy constructor up inlining short initialization, outlining long
initialization into __init_long() which is the externally instantiated
slow path initialization.
Subsequently changing the copy ctor to be inlined (not externally
instantiated) provides significant speed ups for short string
initialization.
Generated code given:
void StringCopyCtor(void* mem, const std::string& s) {
   std::string*p = new(mem) std::string{s};
}
asm:
       cmp     byte ptr [rsi + 23], 0
       js      .LBB0_2
       mov     rax, qword ptr [rsi + 16]
       mov     qword ptr [rdi + 16], rax
       movups  xmm0, xmmword ptr [rsi]
       movups  xmmword ptr [rdi], xmm0
       ret
.LBB0_2:
       jmp     std::basic_string::__init_long # TAILCALL
Benchmark: BM_StringCopy_Empty                                         
5.19ns ± 6%             1.50ns ± 8%  -71.02%        (p=0.000 n=10+10)
BM_StringCopy_Small                                           5.14ns ±
8%             1.53ns ± 7%  -70.17%        (p=0.000 n=10+10)
BM_StringCopy_Large                                           18.9ns ±
0%             19.3ns ± 0%   +1.92%        (p=0.000 n=10+10)
BM_StringCopy_Huge                                             309ns ±
1%              316ns ± 5%     ~            (p=0.633 n=8+10)
Patch from Martijn Vels (mvels@google.com) Reviewed as D72160.
The file was modifiedlibcxx/include/string
Commit 64c4dcb5eef20fca9e125148a74e529643696e2b by ntv
[mlir][Linalg] Extend linalg vectorization to MatmulOp
Summary: This is a simple extension to allow vectorization to work not
only on GenericLinalgOp but more generally across named ops too. For
now, this still only vectorizes matmul-like ops but is a step towards
more generic vectorization of Linalg ops.
Reviewers: ftynse
Subscribers: mehdi_amini, rriddle, jpienaar, burmako, shauheen,
antiagainst, arpith-jacob, mgester, lucyrfox, aartbik, liufengdb,
llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D72942
The file was modifiedmlir/include/mlir/Dialect/Linalg/Transforms/LinalgTransformPatterns.td
The file was modifiedmlir/lib/Dialect/Linalg/Transforms/LinalgTransforms.cpp
The file was modifiedmlir/test/lib/DeclarativeTransforms/TestLinalgTransformPatterns.td
The file was modifiedmlir/test/Dialect/Linalg/transform-patterns.mlir
The file was modifiedmlir/include/mlir/Dialect/Linalg/Transforms/LinalgTransforms.h
Commit a93aa5347641159aa0d2d48dda9e1a51b2273462 by Jonas Devlieghere
[lldb/Docs] Fix formatting for the variable formatting page
The file was modifiedlldb/docs/use/variable.rst
Commit 049c437c40c46a81257f63c03522556217271b87 by jaskiewiczs
[libcxx] Introduce LinuxRemoteTI for remote testing
Summary: This patch adds a new target info object called LinuxRemoteTI.
Unlike LinuxLocalTI, which asks the host system about various things
like available locales, distribution name etc. which don't make sense if
we're testing on a remote board, LinuxRemoteTI uses SSHExecutor to get
information from the target system.
Reviewers: jroelofs, ldionne, bcraig, EricWF, danalbert, mclow.lists
Reviewed By: jroelofs
Subscribers: christof, dexonsmith, libcxx-commits
Tags: #libc
Differential Revision: https://reviews.llvm.org/D72847
The file was modifiedlibcxx/utils/libcxx/test/config.py
The file was modifiedlibcxx/utils/libcxx/test/target_info.py
The file was modifiedlibcxx/utils/libcxx/test/executor.py
Commit 383ff4eac1db8313ec522ba3ac0903aaeda7ff63 by jaskiewiczs
[CMake] Use LinuxRemoteTI instead of LinuxLocalTI in CrossWinToARMLinux
cmake cache
Summary: Depends on D72847
Reviewers: vvereschaka, aorlov, andreil99
Reviewed By: vvereschaka
Subscribers: mgorny, kristof.beyls, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D72850
The file was modifiedclang/cmake/caches/CrossWinToARMLinux.cmake
Commit d3db13af7e5c01632fbf28149a2d4f9c4841aeba by phosek
[profile] Support counter relocation at runtime
This is an alternative to the continous mode that was implemented in
D68351. This mode relies on padding and the ability to mmap a file over
the existing mapping which is generally only available on POSIX systems
and isn't suitable for other platforms.
This change instead introduces the ability to relocate counters at
runtime using a level of indirection. On every counter access, we add a
bias to the counter address. This bias is stored in a symbol that's
provided by the profile runtime and is initially set to zero, meaning no
relocation. The runtime can mmap the profile into memory at abitrary
location, and set bias to the offset between the original and the new
counter location, at which point every subsequent counter access will be
to the new location, which allows updating profile directly akin to the
continous mode.
The advantage of this implementation is that doesn't require any special
OS support. The disadvantage is the extra overhead due to additional
instructions required for each counter access (overhead both in terms of
binary size and performance) plus duplication of counters (i.e. one copy
in the binary itself and another copy that's mmapped).
Differential Revision: https://reviews.llvm.org/D69740
The file was modifiedcompiler-rt/lib/profile/InstrProfilingPlatformFuchsia.c
The file was removedcompiler-rt/test/profile/ContinuousSyncMode/lit.local.cfg.py
The file was modifiedcompiler-rt/test/profile/ContinuousSyncMode/online-merging.c
The file was modifiedllvm/include/llvm/Transforms/Instrumentation/InstrProfiling.h
The file was modifiedcompiler-rt/test/profile/ContinuousSyncMode/set-file-object.c
The file was addedcompiler-rt/test/profile/ContinuousSyncMode/runtime-counter-relocation.c
The file was modifiedcompiler-rt/lib/profile/InstrProfilingFile.c
The file was modifiedllvm/include/llvm/ProfileData/InstrProf.h
The file was modifiedllvm/lib/Transforms/Instrumentation/InstrProfiling.cpp
The file was modifiedcompiler-rt/test/profile/ContinuousSyncMode/multiple-DSOs.c
The file was modifiedcompiler-rt/test/profile/ContinuousSyncMode/set-filename.c
The file was modifiedcompiler-rt/lib/profile/InstrProfilingInternal.h
The file was addedllvm/test/Instrumentation/InstrProfiling/runtime-counter-relocation.ll
The file was modifiedclang/docs/SourceBasedCodeCoverage.rst
The file was modifiedclang/lib/Driver/ToolChains/Darwin.cpp
The file was modifiedcompiler-rt/test/profile/ContinuousSyncMode/pid-substitution.c
The file was modifiedcompiler-rt/lib/profile/CMakeLists.txt
The file was modifiedcompiler-rt/lib/profile/InstrProfilingBuffer.c
The file was modifiedcompiler-rt/lib/profile/InstrProfiling.h
The file was modifiedcompiler-rt/test/profile/ContinuousSyncMode/basic.c
The file was addedcompiler-rt/lib/profile/InstrProfilingBiasVar.c
Commit 9b9c68a2d6adea397e6bc22b29d6d81bb997a256 by peter
hwasan: Remove dead code. NFCI.
Differential Revision: https://reviews.llvm.org/D72896
The file was modifiedcompiler-rt/lib/hwasan/hwasan.h
The file was modifiedcompiler-rt/lib/hwasan/hwasan.cpp
The file was modifiedcompiler-rt/lib/hwasan/hwasan_thread.h
Commit 128e1ebd931027c58065f0c0dc83c0b6a1c53a83 by phosek
[CMake] Prefer multi-target variables over generic target variables in
runtimes build
Runtimes variables in a multi-target environment are defined like:
RUNTIMES_target_VARIABLE_NAME RUNTIMES_target+multi_VARIABLE_NAME
In my case, I have a downstream runtimes cache that does the following:
set(RUNTIMES_${target}+except_LIBCXXABI_ENABLE_EXCEPTIONS ON CACHE BOOL
"") set(RUNTIMES_${target}_LIBCXX_ENABLE_EXCEPTIONS OFF CACHE BOOL "")
I found that I was always getting the 'target' variable value (OFF) in
my 'target+except' build, which was unexpected.  This behavior was
caused by the loop in llvm/runtimes/CMakeLists.txt that runs through all
variable names, adding '-DVARIABLE_NAME=' options to the subsequent
external project's cmake command.
The issue is that the loop does a single pass, such that if the 'target'
value appears in the cache after the 'target+except' value, the 'target'
value will take precedence. I suggest in my change here that the more
specific 'target+except' value should take precedence always, without
relying on CMake cache ordering.
Differential Revision: https://reviews.llvm.org/D71570
Patch By: JamesNagurne
The file was modifiedllvm/runtimes/CMakeLists.txt
Commit 9f6c6ee6b9b6409c6cb2d200553815cec7f74cc3 by asbirlea
[MemDepAnalysis/VNCoercion] Move static method to its only use. [NFCI]
Static method MemoryDependenceResults::getLoadLoadClobberFullWidthSize
does not have or use any info specific to MemoryDependenceResults. Move
it to its only user: VNCoercion.
The file was modifiedllvm/lib/Transforms/Utils/VNCoercion.cpp
The file was modifiedllvm/lib/Analysis/MemoryDependenceAnalysis.cpp
The file was modifiedllvm/include/llvm/Analysis/MemoryDependenceAnalysis.h
Commit d081962dead08ef0982081e78d679dd609947ca5 by eugenis
Merge memtag instructions with adjacent stack slots.
Summary: Detect a run of memory tagging instructions for adjacent stack
frame slots, and replace them with a shorter instruction sequence
* replace STG + STG with ST2G
* replace STGloop + STGloop with STGloop
This code needs to run when stack slot offsets are already known, but
before FrameIndex operands in STG instructions are eliminated; that's
the reason for the new hook in PrologueEpilogue.
This change modifies STGloop and STZGloop pseudos to take the size as an
immediate integer operand, and adds _untied variants of those pseudos
that are allowed to take the base address as a FI operand. This is
needed to simplify recognizing an STGloop instruction as operating on a
stack slot post-regalloc.
This improves memtag code size by ~0.25%, and it looks like an
additional ~0.1% is possible by rearranging the stack frame such that
consecutive STG instructions reference adjacent slots (patch pending).
Reviewers: pcc, ostannard
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D70286
The file was modifiedllvm/lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp
The file was modifiedllvm/lib/Target/AArch64/AArch64FrameLowering.h
The file was modifiedllvm/lib/Target/AArch64/AArch64InstrInfo.cpp
The file was modifiedllvm/test/CodeGen/AArch64/settag.ll
The file was modifiedllvm/include/llvm/CodeGen/TargetFrameLowering.h
The file was modifiedllvm/lib/CodeGen/PrologEpilogInserter.cpp
The file was addedllvm/test/CodeGen/AArch64/settag-merge.mir
The file was modifiedllvm/lib/Target/AArch64/AArch64FrameLowering.cpp
The file was modifiedllvm/lib/Target/AArch64/AArch64InstrInfo.td
The file was modifiedllvm/test/CodeGen/AArch64/stack-tagging-unchecked-ld-st.ll
The file was addedllvm/test/CodeGen/AArch64/settag-merge.ll
The file was modifiedllvm/lib/Target/AArch64/AArch64RegisterInfo.cpp
The file was modifiedllvm/lib/Target/AArch64/AArch64SelectionDAGInfo.cpp
Commit 6afa0e88e32558c115e72797baf57b86cfa37e07 by thakis
[gn build] fix build after 22af2cbefc
The file was modifiedllvm/utils/gn/secondary/llvm/tools/llvm-ml/BUILD.gn
Commit 49dc3a94671d0b3a995381d5b00dc89366ac0481 by llvmgnsyncbot
[gn build] Port d3db13af7e5
The file was modifiedllvm/utils/gn/secondary/compiler-rt/lib/profile/BUILD.gn