SuccessChanges

Summary

  1. [lldb/Test] Use self.assertIn in TestGdbRemoteTargetXmlPacket (details)
  2. [SCCP] Remove dead switch cases based on range information (details)
  3. [ELF] Add --dependency-file option (details)
  4. [flang] Fix an assert on duplicate initializations (details)
  5. [CMake][Fuchsia] Include additional tools in the toolchain (details)
  6. [CVP] Add tests for min/max/abs intrinsic comparisons (NFC) (details)
  7. [ConstantRange][CVP] Compute min/max/abs intrinsic ranges (details)
  8. [LLD] [Mingw] Don't export symbols from profile generate (details)
  9. [compiler-rt] [profile] fix profile generate for mingw x86_64 (details)
  10. [lldb/Docs] Add lldb-arm-ubuntu to the list of bots (details)
  11. [ConstantRange] Support abs with poison flag (details)
  12. [lldb/Docs] Remove stale bot on GreenDragon and add reproducer one (details)
  13. [SelectionDAG] Fix lowering of vector geps (details)
  14. [ConstantRange][CVP] Make use of abs poison flag (details)
  15. [lld-macho] Support __dso_handle for C++ (details)
  16. [lld-macho] Implement -headerpad (details)
  17. [lld-macho] Make __LINKEDIT sections contiguous (details)
  18. AMDGPU: Put inexpensive ops first in AMDGPUAnnotateUniformValues::visitLoadInst (details)
  19. [lld-macho] Add comment for literal argument (details)
  20. PR46908: Emit undef destroying_delete_t as an aggregate RValue. (details)
  21. [clang-tidy][NFC] Use StringMap for ClangTidyCheckFactories::FacoryMap (details)
  22. [mlir][spirv] Add support for converting memref of vector to SPIR-V (details)
  23. AMDGPU: Fix liveness errors when copying AGPR tuples (details)
  24. [MLIR][NFC] Add SymbolUse::UseRange::empty() (details)
  25. [COFF] Port CallGraphSort to COFF from ELF (details)
  26. [JITLink] Allow JITLinkContext::notifyResolved to return an Error. (details)
  27. [llvm-jitlink] Add -harness option to llvm-jitlink. (details)
  28. [gn build] Port 763671f387f (details)
  29. [clang codegen][AArch64] Use llvm.aarch64.neon.fcvtzs/u where it's necessary (details)
  30. [libc] Add a tool called WrapperGen. (details)
  31. [doc] Describe the header guard style (details)
  32. [AArch64][GlobalISel] Add legalization & selection support for G_INTRINSIC_LRINT. (details)
  33. [LegalizeTypes][SVE] Support widen/split legalization for SPLAT_VECTOR (details)
  34. [debugserver/Apple Silicon] Handoff connections when attaching to translated processes (details)
  35. [profile] Remove dependence on getpagesize from InstrProfilingBuffer.c.o (details)
  36. [ValueTracking] Add basic computeKnownBits support for llvm.abs intrinsic (details)
  37. [Attributor] Add time trace support. (details)
  38. [X86] Separate CPU Feature lists in X86.td between architecture features and tuning features (details)
  39. [X86] Fix for ballooning compile times due to Load Value Injection (LVI) mitigations (details)
  40. [NFC][AMDGPU] Improve fused fmul+fadd tests. (details)
  41. [OpenMP] Refactored the function `target` (details)
  42. [NFC] Move findAllocaForValue into ValueTracking.h (details)
  43. [OpenMP] Refactored the function `targetDataEnd` (details)
  44. [ValueTracking] Remove AllocaForValue parameter (details)
Commit 3bb48898bc8af58884d4aa6279d4281938c07e76 by Jonas Devlieghere
[lldb/Test] Use self.assertIn in TestGdbRemoteTargetXmlPacket

On the ARM buildbot the returned architecture is `armv8l` while
getArchitecture() just returns `arm`.
The file was modifiedlldb/test/API/tools/lldb-server/registers-target-xml-reading/TestGdbRemoteTargetXmlPacket.py
Commit 4c16eafe12a5f0c82303511d9d3d7acb5ffe84e4 by nikita.ppv
[SCCP] Remove dead switch cases based on range information

Determine whether switch edges are feasible based on range information,
and remove non-feasible edges lateron.

This does not try to determine whether the default edge is dead,
as we'd have to determine that the range is fully covered by the
cases for that.

Another limitation here is that we don't remove dead cases that
have the same successor as a live case. I'm not handling this
because I wanted to keep the edge removal based on feasible edges
only, rather than inspecting ranges again there -- this does not
seem like a particularly useful case to handle.

Differential Revision: https://reviews.llvm.org/D84270
The file was modifiedllvm/lib/Transforms/Scalar/SCCP.cpp
The file was modifiedllvm/test/Transforms/SCCP/switch.ll
Commit b4c7657ba602acde1c2ea5391c973949b9c3ce09 by phosek
[ELF] Add --dependency-file option

Clang and GCC have a feature (-MD flag) to create a dependency file
in a format that build systems such as Make or Ninja can read, which
specifies all the additional inputs such .h files.

This change introduces the same functionality to lld bringing it to
feature parity with ld and gold which gained this feature recently.
See https://sourceware.org/bugzilla/show_bug.cgi?id=22843 for more
details and discussion.

The implementation corresponds to -MD -MP compiler flag where the
generated dependency file also includes phony targets which works
around the errors where the dependency is removed. This matches the
format used by ld and gold.

Fixes PR42806

Differential Revision: https://reviews.llvm.org/D82437
The file was modifiedlld/ELF/Driver.cpp
The file was modifiedlld/ELF/Config.h
The file was addedlld/test/ELF/dependency-file.s
The file was modifiedlld/ELF/Options.td
The file was modifiedlld/ELF/InputFiles.cpp
Commit fac84536bcb9fbca2b3517ca83d382329d0e6c55 by psteinfeld
[flang] Fix an assert on duplicate initializations

When declaring the same variable twice with an initialization, we were failing
an internal check.  I fixed this by checking to see if the associated symbol
already had an error.

I added tests for pointer and non-pointer initialization of duplicate names.

Differential Revision: https://reviews.llvm.org/D84969
The file was modifiedflang/test/Semantics/resolve91.f90
The file was modifiedflang/lib/Semantics/resolve-names.cpp
Commit 3ff7dcded213844bcb0c1d55a1a66ad8fd9b483b by phosek
[CMake][Fuchsia] Include additional tools in the toolchain

These are needed on Windows.

Differential Revision: https://reviews.llvm.org/D83999
The file was modifiedclang/cmake/caches/Fuchsia-stage2.cmake
Commit 95d1e668ed502af481edabb64d3a2093a57329ad by nikita.ppv
[CVP] Add tests for min/max/abs intrinsic comparisons (NFC)
The file was addedllvm/test/Transforms/CorrelatedValuePropagation/minmaxabs.ll
Commit d8a98a9c351be0a535ce5c3b9b200a76e9b16d3a by nikita.ppv
[ConstantRange][CVP] Compute min/max/abs intrinsic ranges

Wire up ConstantRange::intrinsic() to the existing primitives for
min, max and abs.

The poison flag on abs is not yet taken into account.
The file was modifiedllvm/test/Transforms/CorrelatedValuePropagation/minmaxabs.ll
The file was modifiedllvm/lib/IR/ConstantRange.cpp
Commit da324f9904634855a0a3549284758cb079723cdf by martin
[LLD] [Mingw] Don't export symbols from profile generate

Differential Revision: https://reviews.llvm.org/D84756
The file was modifiedlld/COFF/MinGW.cpp
Commit 14c1b4017422cbf374086ea4c4fa74e16fb56779 by martin
[compiler-rt] [profile] fix profile generate for mingw x86_64

Differential Revision: https://reviews.llvm.org/D84757
The file was modifiedcompiler-rt/lib/profile/CMakeLists.txt
The file was modifiedcompiler-rt/lib/profile/InstrProfilingPort.h
Commit 8c1a31d83313e4d43509177193f1de14cf897c05 by Jonas Devlieghere
[lldb/Docs] Add lldb-arm-ubuntu to the list of bots
The file was modifiedlldb/docs/resources/bots.rst
Commit 94f8120cb9d368602df5aefa32211e001338e296 by nikita.ppv
[ConstantRange] Support abs with poison flag

This just adds the ConstantRange support, including exhaustive
testing. It's not wired up to the IR intrinsic flag yet.
The file was modifiedllvm/unittests/IR/ConstantRangeTest.cpp
The file was modifiedllvm/lib/IR/ConstantRange.cpp
The file was modifiedllvm/include/llvm/IR/ConstantRange.h
Commit 02c1bba67009041a999220f370e81376883d7a65 by Jonas Devlieghere
[lldb/Docs] Remove stale bot on GreenDragon and add reproducer one

- Remove the link to the Python 3 job which no longer exists.
- Add a link to the reproducer job.
The file was modifiedlldb/docs/resources/bots.rst
Commit afae6d97fa55984003321245ec6ceb5af9cc5856 by jonathan_roelofs
[SelectionDAG] Fix lowering of vector geps

This fixes an assertion failure that was being triggered in
SelectionDAG::getZeroExtendInReg(), where it was trying to extend the <2xi32>
to i64 (which should have been <2xi64>).

Fixes: rdar://66016901

Differential Revision: https://reviews.llvm.org/D84884
The file was addedllvm/test/CodeGen/AArch64/vector-gep.ll
The file was modifiedllvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
Commit 9ebeac678855a1bc2492a9630f0300518e2755dc by nikita.ppv
[ConstantRange][CVP] Make use of abs poison flag

Pass the abs poison flag to the underlying ConstantRange
implementation, allowing CVP to simplify based on it.

Importantly, this recognizes that abs with poison flag is actually
non-negative...
The file was modifiedllvm/test/Transforms/CorrelatedValuePropagation/minmaxabs.ll
The file was modifiedllvm/lib/IR/ConstantRange.cpp
Commit 3587de22819869a2925994d8bd75fa1386464660 by jezng
[lld-macho] Support __dso_handle for C++

The C++ ABI requires dylibs to pass a pointer to __cxa_atexit which does
e.g. cleanup of static global variables. The C++ spec says that the pointer
can point to any address in one of the dylib's segments, but in practice
ld64 seems to set it to point to the header, so that's what's implemented
here.

Reviewed By: #lld-macho, smeenai

Differential Revision: https://reviews.llvm.org/D83603
The file was modifiedlld/MachO/SymbolTable.h
The file was modifiedlld/MachO/SyntheticSections.h
The file was addedlld/test/MachO/dso-handle.s
The file was modifiedlld/MachO/Symbols.cpp
The file was modifiedlld/MachO/SymbolTable.cpp
The file was modifiedlld/MachO/Writer.cpp
The file was addedlld/test/MachO/invalid/dso-handle-duplicate.s
The file was modifiedlld/MachO/Symbols.h
The file was modifiedlld/MachO/Driver.cpp
Commit 22e6648a1834aa6680064eaf83e1e051a7248e17 by jezng
[lld-macho] Implement -headerpad

Tools like `install_name_tool` and `codesign` may modify the Mach-O
header and increase its size. The linker has to provide padding to make this
possible. This diff does that, plus sets its default value to 32 bytes (which
is what ld64 does).

Unlike ld64, however, we lay out our sections *exactly* `-headerpad` bytes from
the header, whereas ld64 just treats the padding requirement as a lower bound.
ld64 actually starts laying out the non-header sections in the __TEXT segment
from the end of the (page-aligned) segment rather than the front, so its
binaries typically have more than `-headerpad` bytes of actual padding.
We should consider implementing the same alignment behavior.

Reviewed By: #lld-macho, compnerd

Differential Revision: https://reviews.llvm.org/D84714
The file was modifiedlld/MachO/SyntheticSections.cpp
The file was modifiedlld/Common/Args.cpp
The file was addedlld/test/MachO/headerpad.s
The file was modifiedlld/include/lld/Common/Args.h
The file was modifiedlld/test/MachO/relocations.s
The file was modifiedlld/MachO/Driver.cpp
The file was modifiedlld/MachO/Config.h
The file was modifiedlld/test/MachO/local-got.s
The file was modifiedlld/MachO/Options.td
Commit 98210796e108b59bad56fed9df98e920359afc6b by jezng
[lld-macho] Make __LINKEDIT sections contiguous

codesign (or more specifically libstuff) checks that each section in
__LINKEDIT ends where the next one starts -- no gaps are permitted. This
diff achieves it by aligning every section's start and end points to
WordSize.

Remarks: ld64 appears to satisfy the constraint by adding padding bytes
when generating the __LINKEDIT data, e.g. by emitting BIND_OPCODE_DONE
(which is a 0x0 byte) repeatedly. I think the approach this diff takes
is a bit more elegant, but I'm not sure if it's too restrictive. In
particular, it assumes padding always uses the zero byte. But we can
revisit this later.

Reviewed By: #lld-macho, compnerd

Differential Revision: https://reviews.llvm.org/D84718
The file was modifiedlld/MachO/SyntheticSections.cpp
The file was addedlld/test/MachO/linkedit-contiguity.s
The file was modifiedlld/MachO/Writer.cpp
The file was modifiedlld/MachO/SyntheticSections.h
Commit 243376cdc7b719d443f42c8c4667e5d96af53dcc by changpeng.fang
AMDGPU: Put inexpensive ops first in AMDGPUAnnotateUniformValues::visitLoadInst

Summary:
  This is in response to the review of https://reviews.llvm.org/D84873:
The expensive check should be reordered last

Reviewers:
  arsenm

Differential Revision:
  https://reviews.llvm.org/D84890
The file was modifiedllvm/lib/Target/AMDGPU/AMDGPUAnnotateUniformValues.cpp
Commit c89e46e767e25c426628f6365c577a3248634f1f by jezng
[lld-macho] Add comment for literal argument
The file was modifiedlld/MachO/Driver.cpp
Commit 1e7f026c3b59bea22491819f86d8388d0c3e0c07 by richard
PR46908: Emit undef destroying_delete_t as an aggregate RValue.

We previously used a non-aggregate RValue to represent the passed value,
which violated the assumptions of call arg lowering in some cases, in
particular on 32-bit Windows, where we'd end up producing an FCA store
with TBAA metadata, that the IR verifier would reject.
The file was modifiedclang/lib/CodeGen/CGExprCXX.cpp
The file was modifiedclang/test/CodeGenCXX/cxx2a-destroying-delete.cpp
Commit c23ae3f18ee3ff11671f4c62ffc66d150b1bcdc2 by n.james93
[clang-tidy][NFC] Use StringMap for ClangTidyCheckFactories::FacoryMap

Reviewed By: gribozavr2

Differential Revision: https://reviews.llvm.org/D84926
The file was modifiedclang-tools-extra/clang-tidy/ClangTidy.cpp
The file was modifiedclang-tools-extra/clang-tidy/ClangTidyModule.cpp
The file was modifiedclang-tools-extra/clang-tidy/ClangTidyModule.h
Commit 59156bad03ffe37558b95fca62b5df4394de280c by thomasraoux
[mlir][spirv] Add support for converting memref of vector to SPIR-V

This allow declaring buffers and alloc of vectors so that we can support vector
load/store.

Differential Revision: https://reviews.llvm.org/D84982
The file was modifiedmlir/lib/Conversion/StandardToSPIRV/ConvertStandardToSPIRV.cpp
The file was modifiedmlir/test/Conversion/StandardToSPIRV/std-types-to-spirv.mlir
The file was modifiedmlir/test/Conversion/StandardToSPIRV/alloc.mlir
The file was modifiedmlir/lib/Dialect/SPIRV/SPIRVLowering.cpp
Commit e56e9022bc54c575ad8ecc3934e9cf84b8542e62 by Matthew.Arsenault
AMDGPU: Fix liveness errors when copying AGPR tuples

Avoid recursively calling copyPhysReg for AGPR handling. This was
dropping the necessary super register implicit defs to avoid liveness
verifier errors.
The file was modifiedllvm/test/CodeGen/AMDGPU/accvgpr-copy.mir
The file was modifiedllvm/lib/Target/AMDGPU/SIInstrInfo.cpp
Commit a34a8d52605a203cfde7d9a8600e1e3e0ee63df7 by jurahul
[MLIR][NFC] Add SymbolUse::UseRange::empty()

Differential Revision: https://reviews.llvm.org/D84984
The file was modifiedmlir/include/mlir/IR/SymbolTable.h
Commit 763671f387fdd00329c5b715d3ec6c62680f3f8e by zequanwu
[COFF] Port CallGraphSort to COFF from ELF
The file was modifiedlld/COFF/InputFiles.cpp
The file was addedlld/test/COFF/cgprofile-err.s
The file was modifiedlld/ELF/CallGraphSort.cpp
The file was addedlld/test/COFF/cgprofile-obj.s
The file was addedlld/test/COFF/cgprofile-txt.s
The file was addedlld/COFF/CallGraphSort.cpp
The file was modifiedlld/COFF/CMakeLists.txt
The file was addedlld/test/COFF/cgprofile-bad-clusters.s
The file was addedlld/test/COFF/cgprofile-icf.s
The file was modifiedlld/COFF/Config.h
The file was modifiedlld/COFF/Writer.cpp
The file was modifiedlld/COFF/Options.td
The file was modifiedlld/COFF/InputFiles.h
The file was addedlld/test/COFF/cgprofile-print.s
The file was addedlld/COFF/CallGraphSort.h
The file was modifiedlld/COFF/Driver.cpp
Commit 9f1dcdca71c4109354ec916ad27c24caf269c705 by Lang Hames
[JITLink] Allow JITLinkContext::notifyResolved to return an Error.

This allows clients to detect invalid transformations applied by JITLink passes
(e.g. inserting or removing symbols in unexpected ways) and terminate linking
with an error.

This change is used to simplify the error propagation logic in
ObjectLinkingLayer.
The file was modifiedllvm/lib/ExecutionEngine/JITLink/JITLinkGeneric.cpp
The file was modifiedllvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp
The file was modifiedllvm/include/llvm/ExecutionEngine/JITLink/JITLink.h
Commit 8ce8cee1e1d44d480ea87f1ac47eddcf07c433d1 by Lang Hames
[llvm-jitlink] Add -harness option to llvm-jitlink.

The -harness option enables new testing use-cases for llvm-jitlink. It takes a
list of objects to treat as a test harness for any regular objects passed to
llvm-jitlink.

If any files are passed using the -harness option then the following
transformations are applied to all other files:

  (1) Symbols definitions that are referenced by the harness files are promoted
      to default scope. (This enables access to statics from test harness).

  (2) Symbols definitions that clash with definitions in the harness files are
      deleted. (This enables interposition by test harness).

  (3) All other definitions in regular files are demoted to local scope.
      (This causes untested code to be dead stripped, reducing memory cost and
      eliminating spurious unresolved symbol errors from untested code).

These transformations allow the harness files to reference and interpose
symbols in the regular object files, which can be used to support execution
tests (including fuzz tests) of functions in relocatable objects produced by a
build.
The file was modifiedllvm/tools/llvm-jitlink/llvm-jitlink.cpp
The file was modifiedllvm/tools/llvm-jitlink/llvm-jitlink.h
The file was addedllvm/test/ExecutionEngine/JITLink/X86/MachO_test_harness_harness.s
The file was addedllvm/test/ExecutionEngine/JITLink/X86/Inputs/MachO_test_harness_test.s
The file was modifiedllvm/include/llvm/ExecutionEngine/JITLink/JITLink.h
The file was modifiedllvm/lib/ExecutionEngine/JITLink/JITLinkGeneric.cpp
Commit b811736f8bbf6ec9596c191a6e9406f9df9523ae by llvmgnsyncbot
[gn build] Port 763671f387f
The file was modifiedllvm/utils/gn/secondary/lld/COFF/BUILD.gn
Commit 8dfb5d767e70dd862096c8872fd3e3bead99741d by efriedma
[clang codegen][AArch64] Use llvm.aarch64.neon.fcvtzs/u where it's necessary

fptosi/fptoui have similar, but not identical, semantics.  In
particular, the behavior on overflow is different.

Fixes https://bugs.llvm.org/show_bug.cgi?id=46844 for 64-bit.  (The
corresponding patch for 32-bit is more involved because the equivalent
intrinsics don't exist, as far as I can tell.)

Differential Revision: https://reviews.llvm.org/D84703
The file was modifiedclang/test/CodeGen/aarch64-neon-fcvt-intrinsics.c
The file was modifiedclang/lib/CodeGen/CGBuiltin.cpp
The file was modifiedclang/test/CodeGen/aarch64-v8.2a-fp16-intrinsics.c
The file was modifiedclang/test/CodeGen/aarch64-neon-misc.c
The file was modifiedclang/test/CodeGen/aarch64-neon-intrinsics.c
The file was modifiedclang/test/CodeGen/aarch64-v8.2a-neon-intrinsics.c
Commit a32af8252fde237a3936c4f2f5bee1dfb0cf5ea8 by sivachandra
[libc] Add a tool called WrapperGen.

This tool will be used to generate C wrappers for the C++ LLVM libc
implementations. This change does not hook this tool up to anything yet.
However, it can be useful for cases where one does not want to run the
objcopy step (to insert the C symbol in the object file) but can make use
of LTO to eliminate the cost of the additional wrapper call. This can be
relevant for certain downstream platforms. If this tool can benefit other
libc platforms in general, then it can be integrated into the build system
with options to use or not use the wrappers. An example of such a
platform is CUDA.

Reviewed By: abrachet

Differential Revision: https://reviews.llvm.org/D84848
The file was modifiedlibc/utils/CMakeLists.txt
The file was modifiedlibc/utils/LibcTableGenUtil/APIIndexer.h
The file was modifiedlibc/utils/LibcTableGenUtil/APIIndexer.cpp
The file was addedlibc/utils/tools/CMakeLists.txt
The file was addedlibc/utils/tools/WrapperGen/CMakeLists.txt
The file was addedlibc/utils/tools/WrapperGen/Main.cpp
Commit abb812823701cbbb615fea0d6fe731725eb4162f by mtrofin
[doc] Describe the header guard style

clang-tidy's llvm-header-guard rule references the LLVM style - where it's
missing.

Differential Revision: https://reviews.llvm.org/D84989
The file was modifiedllvm/docs/CodingStandards.rst
Commit 09f9f7dd1bfe3ec2625fec4de36f4d9c63593bf7 by Amara Emerson
[AArch64][GlobalISel] Add legalization & selection support for G_INTRINSIC_LRINT.

Differential Revision: https://reviews.llvm.org/D84552
The file was modifiedllvm/include/llvm/Target/GlobalISel/SelectionDAGCompat.td
The file was modifiedllvm/lib/Target/AArch64/GISel/AArch64LegalizerInfo.cpp
The file was addedllvm/test/CodeGen/AArch64/GlobalISel/legalize-lrint.mir
The file was modifiedllvm/test/CodeGen/AArch64/lrint-conv.ll
The file was modifiedllvm/test/CodeGen/AArch64/GlobalISel/legalizer-info-validation.mir
Commit 7e88efa7c5313aab5d840021085f3924d00609bf by efriedma
[LegalizeTypes][SVE] Support widen/split legalization for SPLAT_VECTOR

Just the obvious implementation that rewrites the result type. Also fix
warning from EXTRACT_SUBVECTOR legalization that triggers on the test.

Differential Revision: https://reviews.llvm.org/D84706
The file was modifiedllvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h
The file was modifiedllvm/test/CodeGen/AArch64/sve-vector-splat.ll
The file was modifiedllvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
Commit 57605758b5de3726eec1d6e587de1003af1ab5b7 by dccitaliano
[debugserver/Apple Silicon] Handoff connections when attaching to translated processes

When we detect a process that the native debugserver cannot handle,
handoff the connection fd to the translated debugserver.
The file was modifiedlldb/tools/debugserver/source/DNB.cpp
The file was modifiedlldb/tools/debugserver/source/debugserver.cpp
Commit 896f797b8bb7683f7e52c6dc94979f3c449bc37d by Vedant Kumar
[profile] Remove dependence on getpagesize from InstrProfilingBuffer.c.o

InstrProfilingBuffer.c.o is generic code that must support compilation
into freestanding projects. This gets rid of its dependence on the
_getpagesize symbol from libc, shifting it to InstrProfilingFile.c.o.

This fixes a build failure seen in a firmware project.

rdar://66249701
The file was modifiedcompiler-rt/lib/profile/InstrProfiling.h
The file was modifiedcompiler-rt/test/profile/instrprof-without-libc.c
The file was modifiedcompiler-rt/lib/profile/InstrProfilingBuffer.c
The file was modifiedcompiler-rt/lib/profile/InstrProfilingFile.c
Commit 24f5235d936537148fbfea0a6583ad7f2f775402 by craig.topper
[ValueTracking] Add basic computeKnownBits support for llvm.abs intrinsic

This includes basic support for computeKnownBits on abs. I've left FIXMEs for more complicated things we could do.

Differential Revision: https://reviews.llvm.org/D84963
The file was addedllvm/test/Transforms/InstCombine/abs-intrinsic.ll
The file was modifiedllvm/lib/Analysis/ValueTracking.cpp
Commit 49def10e02e35e56d1249405a650b161245f87b0 by kuterdinel
[Attributor] Add time trace support.

This patch addes time trace functionality to have a better understanding
of the analysis times.

Reviewed By: jdoerfert

Differential Revision: https://reviews.llvm.org/D84980
The file was modifiedllvm/include/llvm/Transforms/IPO/Attributor.h
The file was modifiedllvm/lib/Transforms/IPO/Attributor.cpp
Commit 3ad09fd03c51823aeb0bcbd7898aada33e9228d6 by craig.topper
[X86] Separate CPU Feature lists in X86.td between architecture features and tuning features

After the recent change to the tuning settings for pentium4 to improve our default 32-bit behavior, I've decided to see about implementing -mtune support. This way we could have a default architecture CPU of "pentium4" or "x86-64" and a default tuning cpu of "generic". And we could change our "pentium4" tuning settings back to what they were before.

As a step to supporting this, this patch separates all of the features lists for the CPUs into 2 lists. I'm using the Proc class and a new ProcModel class to concat the 2 lists before passing to the target independent ProcessorModel. Future work to truly support mtune would change ProcessorModel to take 2 lists separately. I've diffed the X86GenSubtargetInfo.inc file before and after this patch to ensure that the final feature list for the CPUs isn't changed.

Differential Revision: https://reviews.llvm.org/D84879
The file was modifiedllvm/lib/Target/X86/X86.td
Commit ec1445c5afda7f145a414f11c9103c87a4c1823f by craig.topper
[X86] Fix for ballooning compile times due to Load Value Injection (LVI) mitigations

Fix for the issue raised in https://github.com/rust-lang/rust/issues/74632.

The current heuristic for inserting LFENCEs uses a quadratic-time algorithm. This can apparently cause substantial compilation slowdowns for building Rust projects, where functions > 5000 LoC are apparently common.

The updated heuristic in this patch implements a linear-time algorithm. On a set of benchmarks, the slowdown factor for the generated code was comparable (2.55x geo mean for the quadratic-time heuristic, vs. 2.58x for the linear-time heuristic). Both heuristics offer the same security properties, namely, mitigating LVI.

This patch also includes some formatting fixes.

Differential Revision: https://reviews.llvm.org/D84471
The file was modifiedllvm/lib/Target/X86/X86LoadValueInjectionLoadHardening.cpp
Commit aa77232a63e3f7ca2f0077434d46e0f269499eae by dfukalov
[NFC][AMDGPU] Improve fused fmul+fadd tests.

Reviewed By: rampitec

Differential Revision: https://reviews.llvm.org/D84903
The file was modifiedllvm/test/CodeGen/AMDGPU/fmuladd.v2f16.ll
The file was modifiedllvm/test/CodeGen/AMDGPU/fmuladd.f16.ll
The file was modifiedllvm/test/CodeGen/AMDGPU/fmuladd.f32.ll
The file was modifiedllvm/test/CodeGen/AMDGPU/fmuladd.f64.ll
Commit 8218eee269c382472b9809cb3cce7a98eed7a31b by tianshilei1992
[OpenMP] Refactored the function `target`

Refactored the function `target` to make preparation for fixing the
issue of ahead-of-time device memory deallocation.

Reviewed By: ye-luo

Differential Revision: https://reviews.llvm.org/D84816
The file was modifiedopenmp/libomptarget/src/omptarget.cpp
Commit 61cab352e377d5a37d47555bc56e11f052d7eb8b by Vitaly Buka
[NFC] Move findAllocaForValue into ValueTracking.h

Differential Revision: https://reviews.llvm.org/D84616
The file was modifiedllvm/lib/Analysis/ValueTracking.cpp
The file was modifiedllvm/include/llvm/Transforms/Utils/Local.h
The file was modifiedllvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp
The file was modifiedllvm/include/llvm/Analysis/ValueTracking.h
The file was modifiedllvm/lib/Transforms/Utils/Local.cpp
Commit 0f1016562648e0c5ab0618823d5d6b7280ca86ba by tianshilei1992
[OpenMP] Refactored the function `targetDataEnd`

Refactored the function `targetDataEnd` to make preparation of fixing
the issue of ahead-of-time target memory deallocation. This patch only
renamed `targetDataEnd` related variables and functions to conform
with LLVM code standard.

Reviewed By: ye-luo

Differential Revision: https://reviews.llvm.org/D84991
The file was modifiedopenmp/libomptarget/src/device.cpp
The file was modifiedopenmp/libomptarget/src/private.h
The file was modifiedopenmp/libomptarget/src/api.cpp
The file was modifiedopenmp/libomptarget/src/omptarget.cpp
The file was modifiedopenmp/libomptarget/src/device.h
Commit b256cb88a716dfd270745af1bb98b49c22521a99 by Vitaly Buka
[ValueTracking] Remove AllocaForValue parameter

findAllocaForValue uses AllocaForValue to cache resolved values.
The function is used only to resolve arguments of lifetime
intrinsic which usually are not fare for allocas. So result reuse
is likely unnoticeable.

In followup patches I'd like to replace the function with
GetUnderlyingObjects.

Depends on D84616.

Differential Revision: https://reviews.llvm.org/D84617
The file was modifiedllvm/lib/Target/AArch64/AArch64StackTagging.cpp
The file was modifiedllvm/lib/Analysis/ValueTracking.cpp
The file was modifiedllvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
The file was modifiedllvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp
The file was modifiedllvm/include/llvm/Analysis/ValueTracking.h