SuccessChanges

Summary

  1. [CSSPGO] Tweak ICP threshold in top-down inliner (details)
  2. Merge all the llvm-exegesis unit tests into a single binary (details)
  3. [Coroutine] Record the elided coroutines (details)
  4. [Attributor][FIX] Update AMDGPU attributor test (details)
  5. [Attributor] Update check lines for all AMDGPU attributor tests (details)
  6. [OpenMP] Prototype opt-in new GPU device RTL (details)
  7. [InstSimplify] Expose generic interface for replaced operand simplification (details)
  8. [Attributor] Utilize the InstSimplify interface to simplify instructions (details)
  9. [Attributor][FIX] Copy all members in the assignment operator (details)
  10. [OpenMP] Try to simplify all loads in device code (details)
  11. [ORC] Require ExecutorProcessControl when constructing an ExecutionSession. (details)
  12. [gn build] Port 2487db1f2862 (details)
  13. [clang][driver] NFC: Move InputInfo.h from lib to include (details)
  14. [clang][driver] NFC: Expose InputInfo in Job instead of plain filenames (details)
  15. [Debug-Info][llvm-dwarfdump] Don't try to dump location (details)
  16. [docs] Update release notes with all LLVM-C API changes (details)
Commit f0d41b58da4a102452af47c7b420577bd3d47a03 by wlei
[CSSPGO] Tweak ICP threshold in top-down inliner

This change slightly relaxed the current ICP threshold in top-down inliner, specifically always allow one ICP for it. It shows some perf improvements on SPEC and our internal benchmarks. Also renamed the previous flag. We can also try to turn off PGO ICP in the future.

Reviewed By: wenlei, hoy, wmi

Differential Revision: https://reviews.llvm.org/D106588
The file was modifiedllvm/lib/Transforms/IPO/SampleProfile.cpp
The file was modifiedllvm/test/Transforms/SampleProfile/csspgo-inline-icall.ll
Commit dbefcde6da1b58eb181dcbd8d7913175b2ec8350 by tstellar
Merge all the llvm-exegesis unit tests into a single binary

These tests access private symbols in the backends, so they cannot link
against libLLVM.so and must be statically linked.  Linking these tests
can be slow and with debug builds the resulting binaries use a lot of
disk space.

By merging them into a single test binary means we now only need to
statically link 1 test instead of 6, which helps reduce the build
times and saves disk space.

Reviewed By: courbet

Differential Revision: https://reviews.llvm.org/D106464
The file was modifiedllvm/unittests/tools/llvm-exegesis/CMakeLists.txt
The file was modifiedllvm/unittests/tools/llvm-exegesis/Mips/RegisterAliasingTest.cpp
The file was modifiedllvm/unittests/tools/llvm-exegesis/Mips/SnippetGeneratorTest.cpp
The file was modifiedllvm/unittests/tools/llvm-exegesis/Mips/BenchmarkResultTest.cpp
The file was modifiedllvm/unittests/tools/llvm-exegesis/PowerPC/CMakeLists.txt
The file was modifiedllvm/unittests/tools/llvm-exegesis/AArch64/CMakeLists.txt
The file was modifiedllvm/unittests/tools/llvm-exegesis/X86/CMakeLists.txt
The file was modifiedllvm/unittests/tools/llvm-exegesis/X86/SchedClassResolutionTest.cpp
The file was modifiedllvm/unittests/tools/llvm-exegesis/X86/TargetTest.cpp
The file was modifiedllvm/unittests/tools/llvm-exegesis/ARM/CMakeLists.txt
The file was modifiedllvm/tools/llvm-exegesis/lib/BenchmarkResult.h
The file was modifiedllvm/unittests/tools/llvm-exegesis/Mips/CMakeLists.txt
The file was modifiedllvm/unittests/tools/llvm-exegesis/X86/BenchmarkResultTest.cpp
The file was modifiedllvm/unittests/tools/llvm-exegesis/PowerPC/AnalysisTest.cpp
The file was modifiedllvm/unittests/tools/llvm-exegesis/PowerPC/SnippetGeneratorTest.cpp
The file was modifiedllvm/unittests/tools/llvm-exegesis/X86/RegisterAliasingTest.cpp
The file was modifiedllvm/tools/llvm-exegesis/lib/BenchmarkResult.cpp
The file was modifiedllvm/unittests/tools/llvm-exegesis/X86/SnippetGeneratorTest.cpp
Commit 0237dbfdd38053cc190f814b6f92e311ae3509c6 by yedeng.yd
[Coroutine] Record the elided coroutines

Reviewed By: lxfind

Differential Revision: https://reviews.llvm.org/D105606
The file was removedllvm/test/Transforms/Coroutines/coro-elide-count.ll
The file was modifiedllvm/lib/Transforms/Coroutines/CoroElide.cpp
The file was addedllvm/test/Transforms/Coroutines/coro-elide-stat.ll
Commit cdb4cfe8b3ce2b0c50d4855ec260eab07fe63611 by johannes
[Attributor][FIX] Update AMDGPU attributor test

The test contains UB and should be improved, for now we update the check
lines pass it.
The file was modifiedllvm/test/CodeGen/AMDGPU/annotate-kernel-features-hsa-call.ll
Commit 2aaf038efd8cb5db4e35f8b26a0b28b6ac1bb8b1 by johannes
[Attributor] Update check lines for all AMDGPU attributor tests

I thought there was only one when I pushed
cdb4cfe8b3ce2b0c50d4855ec260eab07fe63611, these should be all (in the
CodeGen/AMDGPU folder).
The file was modifiedllvm/test/CodeGen/AMDGPU/simple-indirect-call.ll
The file was modifiedllvm/test/CodeGen/AMDGPU/annotate-kernel-features-hsa.ll
The file was modifiedllvm/test/CodeGen/AMDGPU/direct-indirect-call.ll
The file was modifiedllvm/test/CodeGen/AMDGPU/duplicate-attribute-indirect.ll
Commit 67ab875ff578588574a63d29d52f73fd25128c74 by johannes
[OpenMP] Prototype opt-in new GPU device RTL

The "old" OpenMP GPU device runtime (D14254) has served us well for many
years but modernizing it has caused some pain recently. This patch
introduces an alternative which is mostly written from scratch embracing
OpenMP 5.X, C++, LLVM coding style (where applicable), and conceptual
interfaces. This new runtime is opt-in through a clang flag (D106793).
The new runtime is currently only build for nvptx and has "-new" in its
name.

The design is tailored towards middle-end optimizations rather than
front-end code generation choices, a trend we already started in the old
runtime a while back. In contrast to the old one, state is organized in
a simple manner rather than a "smart" one. While this can induce costs
it helps optimizations. Our expectation is that the majority of codes
can be optimized and a "simple" design is therefore preferable. The new
runtime does also avoid users to pay for things they do not use,
especially wrt. memory. The unlikely case of nested parallelism is
supported but costly to make the more likely case use less resources.

The worksharing and reduction implementation have been taken from the
old runtime and will be rewritten in the future if necessary.

Documentation and debug features are still mostly missing and will be
added over time.

All external symbols start with `__kmpc` for legacy reasons but should
be renamed once we switch over to a single runtime. All internal symbols
are placed in appropriate namespaces (anonymous or `_OMP`) to avoid name
clashes with user symbols.

Differential Revision: https://reviews.llvm.org/D106803
The file was addedopenmp/libomptarget/DeviceRTL/src/Configuration.cpp
The file was addedopenmp/libomptarget/DeviceRTL/src/Parallelism.cpp
The file was addedopenmp/libomptarget/DeviceRTL/src/Debug.cpp
The file was addedopenmp/libomptarget/DeviceRTL/include/Mapping.h
The file was addedopenmp/libomptarget/DeviceRTL/include/State.h
The file was addedopenmp/libomptarget/DeviceRTL/include/generated_microtask_cases.gen
The file was addedopenmp/libomptarget/DeviceRTL/src/Misc.cpp
The file was addedopenmp/libomptarget/DeviceRTL/src/Utils.cpp
The file was addedopenmp/libomptarget/DeviceRTL/src/Workshare.cpp
The file was addedopenmp/libomptarget/DeviceRTL/src/Kernel.cpp
The file was addedopenmp/libomptarget/DeviceRTL/include/Utils.h
The file was addedopenmp/libomptarget/DeviceRTL/include/Debug.h
The file was addedopenmp/libomptarget/DeviceRTL/src/Synchronization.cpp
The file was addedopenmp/libomptarget/DeviceRTL/include/Interface.h
The file was addedopenmp/libomptarget/DeviceRTL/CMakeLists.txt
The file was addedopenmp/libomptarget/DeviceRTL/include/Synchronization.h
The file was addedopenmp/libomptarget/DeviceRTL/include/Configuration.h
The file was addedopenmp/libomptarget/DeviceRTL/src/Tasking.cpp
The file was addedopenmp/libomptarget/DeviceRTL/src/Mapping.cpp
The file was addedopenmp/libomptarget/DeviceRTL/src/State.cpp
The file was addedopenmp/libomptarget/DeviceRTL/include/Types.h
The file was addedopenmp/libomptarget/DeviceRTL/src/Reduction.cpp
The file was modifiedopenmp/libomptarget/CMakeLists.txt
Commit 75636868e2c96cb17fdfd1ed70e284ab19a15160 by johannes
[InstSimplify] Expose generic interface for replaced operand simplification

Users, especially the Attributor, might replace multiple operands at
once. The actual implementation of simplifyWithOpReplaced is able to
handle that just fine, the interface was simply not allowing to replace
more than one operand at a time. This is exposing a more generic
interface without intended changes for existing code.

Differential Revision: https://reviews.llvm.org/D106189
The file was modifiedllvm/lib/Analysis/InstructionSimplify.cpp
The file was modifiedllvm/include/llvm/Analysis/InstructionSimplify.h
Commit d4bfce552110086f198ba46f37acf63df8758921 by johannes
[Attributor] Utilize the InstSimplify interface to simplify instructions

When we simplify at least one operand in the Attributor simplification
we can use the InstSimplify to work on the simplified operands. This
allows us to avoid duplication of the logic.

Depends on D106189

Differential Revision: https://reviews.llvm.org/D106190
The file was modifiedllvm/test/Transforms/Attributor/range.ll
The file was modifiedllvm/test/Transforms/Attributor/ArgumentPromotion/aggregate-promote.ll
The file was modifiedllvm/test/Transforms/Attributor/ArgumentPromotion/chained.ll
The file was modifiedllvm/test/Transforms/Attributor/liveness.ll
The file was modifiedllvm/test/Transforms/Attributor/value-simplify-pointer-info.ll
The file was modifiedllvm/lib/Transforms/IPO/AttributorAttributes.cpp
The file was modifiedllvm/test/Transforms/Attributor/IPConstantProp/PR16052.ll
The file was modifiedllvm/test/Transforms/Attributor/IPConstantProp/PR26044.ll
The file was modifiedllvm/test/Transforms/Attributor/dereferenceable-1.ll
The file was modifiedllvm/test/Transforms/Attributor/potential.ll
The file was modifiedllvm/test/Transforms/Attributor/value-simplify-instances.ll
The file was modifiedllvm/test/Transforms/Attributor/IPConstantProp/dangling-block-address.ll
The file was modifiedllvm/test/Transforms/Attributor/depgraph.ll
The file was modifiedllvm/test/Transforms/Attributor/internal-noalias.ll
The file was modifiedllvm/test/Transforms/Attributor/ArgumentPromotion/invalidation.ll
The file was modifiedllvm/test/Transforms/Attributor/internalize.ll
The file was modifiedllvm/test/Transforms/Attributor/value-simplify.ll
The file was modifiedllvm/test/Transforms/Attributor/ArgumentPromotion/alignment.ll
The file was modifiedllvm/test/Transforms/Attributor/nonnull.ll
The file was modifiedllvm/test/Transforms/Attributor/willreturn.ll
The file was modifiedllvm/test/Transforms/Attributor/IPConstantProp/return-argument.ll
The file was modifiedllvm/test/Transforms/Attributor/lvi-after-jumpthreading.ll
The file was modifiedllvm/test/Transforms/Attributor/ArgumentPromotion/basictest.ll
Commit c55e18824d2e0711682c67b98653c38f8b0ac463 by johannes
[Attributor][FIX] Copy all members in the assignment operator

Also improve debug output slightly.
The file was modifiedllvm/test/Transforms/Attributor/ArgumentPromotion/2008-02-01-ReturnAttrs.ll
The file was modifiedllvm/include/llvm/Transforms/IPO/Attributor.h
The file was modifiedllvm/test/Transforms/Attributor/ArgumentPromotion/profile.ll
The file was modifiedllvm/test/Transforms/Attributor/ArgumentPromotion/alignment.ll
The file was modifiedllvm/lib/Transforms/IPO/Attributor.cpp
The file was modifiedllvm/test/Transforms/Attributor/value-simplify-pointer-info.ll
The file was modifiedllvm/test/Transforms/Attributor/value-simplify.ll
The file was modifiedllvm/test/Transforms/Attributor/ArgumentPromotion/X86/min-legal-vector-width.ll
The file was modifiedllvm/test/Transforms/Attributor/ArgumentPromotion/basictest.ll
The file was modifiedllvm/test/Transforms/Attributor/ArgumentPromotion/X86/attributes.ll
The file was modifiedllvm/test/Transforms/Attributor/nodelete.ll
The file was modifiedllvm/test/Transforms/Attributor/ArgumentPromotion/control-flow2.ll
The file was modifiedllvm/test/Transforms/Attributor/internal-noalias.ll
The file was modifiedllvm/test/Transforms/Attributor/IPConstantProp/2009-09-24-byval-ptr.ll
Commit 70b75f62fc617f1fa7e4859571a99137297146c6 by johannes
[OpenMP] Try to simplify all loads in device code

Eliminating loads/stores in the device code is worth the extra effort,
especially for the new device runtime.

At the same time we do not compute AAExecutionDomain for non-device code
anymore, there is no point.

Differential Revision: https://reviews.llvm.org/D106845
The file was modifiedllvm/lib/Transforms/IPO/OpenMPOpt.cpp
The file was modifiedllvm/include/llvm/Transforms/IPO/Attributor.h
Commit 2487db1f286222e2501c2fa8e8244eda13f6afc3 by Lang Hames
[ORC] Require ExecutorProcessControl when constructing an ExecutionSession.

Wrapper function call and dispatch handler helpers are moved to
ExecutionSession, and existing EPC-based tools are re-written to take an
ExecutionSession argument instead.

Requiring an ExecutorProcessControl instance simplifies existing EPC based
utilities (which only need to take an ES now), and should encourage more
utilities to use the EPC interface. It also simplifies process termination,
since the session can automatically call ExecutorProcessControl::disconnect
(previously this had to be done manually, and carefully ordered with the
rest of JIT tear-down to work correctly).
The file was modifiedllvm/lib/ExecutionEngine/Orc/MachOPlatform.cpp
The file was modifiedllvm/include/llvm/ExecutionEngine/Orc/EPCEHFrameRegistrar.h
The file was modifiedllvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp
The file was modifiedllvm/lib/ExecutionEngine/Orc/OrcV2CBindings.cpp
The file was modifiedllvm/include/llvm/ExecutionEngine/Orc/Core.h
The file was removedllvm/unittests/ExecutionEngine/Orc/ExecutorProcessControlTest.cpp
The file was modifiedllvm/unittests/ExecutionEngine/Orc/ObjectLinkingLayerTest.cpp
The file was modifiedllvm/lib/ExecutionEngine/Orc/EPCDynamicLibrarySearchGenerator.cpp
The file was addedllvm/unittests/ExecutionEngine/Orc/ExecutionSessionWrapperFunctionCallsTest.cpp
The file was modifiedllvm/include/llvm/ExecutionEngine/Orc/ObjectLinkingLayer.h
The file was modifiedllvm/examples/Kaleidoscope/include/KaleidoscopeJIT.h
The file was modifiedllvm/unittests/ExecutionEngine/Orc/CMakeLists.txt
The file was modifiedllvm/examples/Kaleidoscope/BuildingAJIT/Chapter4/KaleidoscopeJIT.h
The file was modifiedllvm/examples/OrcV2Examples/LLJITWithTargetProcessControl/LLJITWithTargetProcessControl.cpp
The file was modifiedllvm/examples/Kaleidoscope/BuildingAJIT/Chapter2/KaleidoscopeJIT.h
The file was modifiedllvm/include/llvm/ExecutionEngine/Orc/ExecutorProcessControl.h
The file was modifiedllvm/include/llvm/ExecutionEngine/Orc/LLJIT.h
The file was modifiedllvm/include/llvm/ExecutionEngine/Orc/EPCDebugObjectRegistrar.h
The file was modifiedllvm/include/llvm/ExecutionEngine/Orc/OrcRPCExecutorProcessControl.h
The file was modifiedllvm/examples/SpeculativeJIT/SpeculativeJIT.cpp
The file was modifiedllvm/lib/ExecutionEngine/Orc/LLJIT.cpp
The file was modifiedllvm/unittests/ExecutionEngine/Orc/RTDyldObjectLinkingLayerTest.cpp
The file was modifiedllvm/tools/llvm-jitlink/llvm-jitlink.cpp
The file was modifiedllvm/tools/llvm-jitlink/llvm-jitlink.h
The file was modifiedllvm/include/llvm/ExecutionEngine/Orc/MachOPlatform.h
The file was modifiedllvm/tools/lli/lli.cpp
The file was modifiedllvm/examples/Kaleidoscope/BuildingAJIT/Chapter1/KaleidoscopeJIT.h
The file was modifiedllvm/include/llvm/ExecutionEngine/Orc/EPCDynamicLibrarySearchGenerator.h
The file was modifiedllvm/lib/ExecutionEngine/Orc/EPCEHFrameRegistrar.cpp
The file was modifiedllvm/lib/ExecutionEngine/Orc/Core.cpp
The file was modifiedllvm/unittests/ExecutionEngine/Orc/OrcTestCommon.h
The file was modifiedllvm/examples/Kaleidoscope/BuildingAJIT/Chapter3/KaleidoscopeJIT.h
The file was modifiedllvm/lib/ExecutionEngine/Orc/ExecutorProcessControl.cpp
The file was modifiedllvm/unittests/ExecutionEngine/Orc/CoreAPIsTest.cpp
The file was modifiedllvm/lib/ExecutionEngine/Orc/EPCDebugObjectRegistrar.cpp
Commit 66640aa5aeaf2d46040f6ae2d8ff5a4a35ecb8dc by llvmgnsyncbot
[gn build] Port 2487db1f2862
The file was modifiedllvm/utils/gn/secondary/llvm/unittests/ExecutionEngine/Orc/BUILD.gn
Commit 60426f33b1d417763ca1954fba5293c959c9623d by Jan Svoboda
[clang][driver] NFC: Move InputInfo.h from lib to include

Moving `InputInfo.h` from `lib/Driver/` into `include/Driver` to be able to expose it in an API consumed from outside of `clangDriver`.

Reviewed By: dexonsmith

Differential Revision: https://reviews.llvm.org/D106787
The file was modifiedclang/lib/Driver/ToolChains/CloudABI.cpp
The file was modifiedclang/lib/Driver/ToolChains/Minix.cpp
The file was modifiedclang/lib/Driver/ToolChains/AMDGPU.cpp
The file was modifiedclang/lib/Driver/ToolChains/AVR.h
The file was modifiedclang/lib/Driver/ToolChains/Ananas.cpp
The file was modifiedclang/lib/Driver/ToolChain.cpp
The file was modifiedclang/lib/Driver/ToolChains/CommonArgs.h
The file was modifiedclang/lib/Driver/Tool.cpp
The file was modifiedclang/lib/Driver/Job.cpp
The file was modifiedclang/lib/Driver/ToolChains/HIP.cpp
The file was modifiedclang/lib/Driver/ToolChains/AVR.cpp
The file was modifiedclang/lib/Driver/ToolChains/BareMetal.cpp
The file was modifiedclang/lib/Driver/ToolChains/Clang.cpp
The file was addedclang/include/clang/Driver/InputInfo.h
The file was modifiedclang/lib/Driver/ToolChains/Cuda.cpp
The file was modifiedclang/lib/Driver/ToolChains/Hexagon.cpp
The file was modifiedclang/lib/Driver/ToolChains/RISCVToolchain.cpp
The file was modifiedclang/lib/Driver/ToolChains/MinGW.cpp
The file was removedclang/lib/Driver/InputInfo.h
The file was modifiedclang/lib/Driver/ToolChains/MSP430.h
The file was modifiedclang/lib/Driver/ToolChains/CommonArgs.cpp
The file was modifiedclang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp
The file was modifiedclang/lib/Driver/Driver.cpp
The file was modifiedclang/lib/Driver/ToolChains/NaCl.cpp
The file was modifiedclang/lib/Driver/ToolChains/MSP430.cpp
Commit b76c7c6faf06bb02b7b7b6bba3f6eb8a33edcdca by Jan Svoboda
[clang][driver] NFC: Expose InputInfo in Job instead of plain filenames

This patch exposes `InputInfo` in `Job` instead of plain filenames. This is useful in a follow-up patch that uses this to recognize `-cc1` commands interesting for Clang tooling.

Depends on D106787.

Reviewed By: dexonsmith

Differential Revision: https://reviews.llvm.org/D106788
The file was modifiedclang/lib/Driver/Job.cpp
The file was modifiedclang/unittests/Driver/ToolChainTest.cpp
The file was modifiedclang/include/clang/Driver/Job.h
Commit 14f6cfcf3cab34ec26474dc464a6a35589f582f7 by esme.yi
[Debug-Info][llvm-dwarfdump] Don't try to dump location
list for attributes that don't have the loclist class.

Summary: The overflow error occurs when we try to dump
location list for those attributes that do not have the
loclist class, like DW_AT_count and DW_AT_byte_size.
After re-reviewed the entire list, I sorted those
attributes into two parts, one for dumping location list
and one for dumping the location expression.

Reviewed By: probinson

Differential Revision: https://reviews.llvm.org/D105613
The file was addedllvm/test/tools/llvm-dwarfdump/X86/formclass3.s
The file was modifiedllvm/lib/DWARFLinker/DWARFLinker.cpp
The file was modifiedllvm/lib/DebugInfo/DWARF/DWARFDie.cpp
The file was modifiedllvm/include/llvm/DebugInfo/DWARF/DWARFAttribute.h
Commit 3c7fd8df3b843b007edac9afe8a3369797724f0f by Lang Hames
[docs] Update release notes with all LLVM-C API changes

Patch by Mats Larsen. Thanks Mats!

Reviewed By: lhames

Differential Revision: https://reviews.llvm.org/D106764
The file was modifiedllvm/docs/ReleaseNotes.rst