LLVM/project 70cf2a0llvm/lib/Transforms/Vectorize SLPVectorizer.cpp

[SLP][NFC]Simplify function/constructors by removing unnecessary params.
DeltaFile
+14-16llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+14-161 files

LLVM/project 688d71elibclc/cmake CMakeCLCInformation.cmake

[libclc] Track dependencies through dependency files (#86965)

This commit fixes the problem of missing build dependencies between
libclc source files and their various includes (namely headers and .inc
files).

We would like to do this with compiler-generated dependency files
because then the dependencies are accurate and there are no false
positives, leading to unnecessary rebuilds. This is how regular C/C++
dependencies are usually tracked by CMake.

Note that this variable is an internal API so is not guaranteed to work,
but then again *all* of CMake's support for new languages (which we use
for CLC/LL languages) is an internal API. On balance this change is
probably worth it due to how minimally invasive it is. It should work
with all supported compilers and CMake generators.
DeltaFile
+1-0libclc/cmake/CMakeCLCInformation.cmake
+1-01 files

LLVM/project 44af53bclang/include/clang/Lex ModuleMap.h, clang/lib/Frontend CompilerInstance.cpp FrontendAction.cpp

[clang][modules] Avoid calling expensive `SourceManager::translateFile()` (#86216)

The `ASTWriter` algorithm for computing affecting module maps uses
`SourceManager::translateFile()` to get a `FileID` from a `FileEntry`.
This is slow (O(n)) since the function performs a linear walk over
`SLocEntries` until it finds one with a matching `FileEntry`.

This patch removes this use of `SourceManager::translateFile()` by
tracking `FileID` instead of `FileEntry` in couple of places in
`ModuleMap`, giving `ASTWriter` the desired `FileID` directly. There are
no changes required for clients that still want a `FileEntry` from
`ModuleMap`: the existing APIs internally use `SourceManager` to perform
the reverse `FileID` to `FileEntry` conversion in O(1).
DeltaFile
+36-30clang/lib/Lex/ModuleMap.cpp
+17-2clang/lib/Frontend/CompilerInstance.cpp
+8-9clang/lib/Serialization/ASTWriter.cpp
+8-7clang/include/clang/Lex/ModuleMap.h
+8-2clang/lib/Frontend/FrontendAction.cpp
+1-0clang/test/ClangScanDeps/modules-extern-unrelated.m
+78-506 files

LLVM/project 5b06de7llvm/lib/Target/X86 X86ISelLowering.cpp

[X86] Add isLogicOp helper to match ISD::AND/OR/XOR and X86ISD::ANDNP

We could easily support the X86ISD 'float' variants of the logic ops as well, but we don't have good test coverage at the moment (they're mainly for SSE1 targets).
DeltaFile
+6-2llvm/lib/Target/X86/X86ISelLowering.cpp
+6-21 files

LLVM/project 346f499llvm/lib/Target/RISCV RISCVInstrInfoZb.td RISCVInstrInfo.td

[RISCV] Add add_like PatFrags to reduce number of required patterns [nfc] (#86983)

This is an NFC prep patch for an upcoming change which is going to
support or_is_add in a bunch more cases. Posting separately because
tblgen is not particularly my strong suit.
DeltaFile
+3-9llvm/lib/Target/RISCV/RISCVInstrInfoZb.td
+4-0llvm/lib/Target/RISCV/RISCVInstrInfo.td
+7-92 files

LLVM/project 6f10dccclang/include/clang/Basic DiagnosticDriverKinds.td, clang/lib/Driver/ToolChains HLSL.cpp

[HLSL] Add validation for the -enable-16bit-types option (#85340)

Previously, the clang compiler with the dxc driver would accept the
-enable-16bit-types flag without checking to see if the required
conditions are met for proper processing of the flag.
Specifically, -enable-16bit-types requires a shader model of at least
6.2 and an HLSL version of at least 2021.
This PR adds a validation check for these other options having the
required values, and emits an error if these constraints are not met.
Fixes #57876

---------

Co-authored-by: Damyan Pepper <damyanp at microsoft.com>
Co-authored-by: Chris B <cbieneman at microsoft.com>
DeltaFile
+25-0clang/test/Options/enable_16bit_types_validation.hlsl
+19-0clang/lib/Frontend/CompilerInvocation.cpp
+14-0clang/test/Options/enable_16bit_types_validation_spirv.hlsl
+1-3clang/lib/Driver/ToolChains/HLSL.cpp
+2-1clang/include/clang/Basic/DiagnosticDriverKinds.td
+1-1clang/test/CodeGenHLSL/builtins/RWBuffer-elementtype.hlsl
+62-56 files

LLVM/project 6e58efautils/bazel/llvm-project-overlay/mlir BUILD.bazel, utils/bazel/llvm-project-overlay/mlir/examples/toy/Ch4 BUILD.bazel

[mlir][bazel] Export headers either from :Transforms or :TransformUtils (#86819)

Split them according to their implementation.

Ideally, header files should be used by only one target, but this is
hard because CMake is less strict with headers (no layering check). But
even with bazel, headers should only be exported once in the `hdrs`
attribute. Other targets may use them in the `srcs` attribute to avoid
circular dependencies.
DeltaFile
+89-12utils/bazel/llvm-project-overlay/mlir/BUILD.bazel
+23-0utils/bazel/llvm-project-overlay/mlir/test/BUILD.bazel
+1-0utils/bazel/llvm-project-overlay/mlir/examples/toy/Ch4/BUILD.bazel
+1-0utils/bazel/llvm-project-overlay/mlir/examples/toy/Ch5/BUILD.bazel
+1-0utils/bazel/llvm-project-overlay/mlir/examples/toy/Ch6/BUILD.bazel
+1-0utils/bazel/llvm-project-overlay/mlir/examples/toy/Ch7/BUILD.bazel
+116-126 files

LLVM/project c2f3a11clang/www c_status.html

Remove an accidental duplicate C status page entry
DeltaFile
+0-5clang/www/c_status.html
+0-51 files

LLVM/project 637421cllvm/lib/Analysis ValueTracking.cpp, llvm/test/Transforms/InstCombine known-bits.ll

[ValueTracking] Tracking `or disjoint` conditions as `add` in Assumption/DomCondition Cache

We can definitionally treat `or disjoint` as `add` anywhere.

Closes #86302
DeltaFile
+2-2llvm/lib/Analysis/ValueTracking.cpp
+1-2llvm/test/Transforms/InstCombine/known-bits.ll
+3-42 files

LLVM/project 0e78655llvm/lib/Analysis LazyValueInfo.cpp, llvm/test/Transforms/CorrelatedValuePropagation basic.ll icmp.ll

[LVI] Use m_AddLike instead of m_Add when matching simple condition

We have more complete logic for handling `Add`, so try to use that
logic for `or disjoint` (which can definitionally be treated as
`add`).

Closes #86058
DeltaFile
+2-4llvm/test/Transforms/CorrelatedValuePropagation/basic.ll
+2-2llvm/lib/Analysis/LazyValueInfo.cpp
+1-2llvm/test/Transforms/CorrelatedValuePropagation/icmp.ll
+5-83 files

LLVM/project efa1544llvm/test/Transforms/CorrelatedValuePropagation basic.ll icmp.ll

[LVI] Add tests for tracking `or disjoint` like add; NFC
DeltaFile
+58-0llvm/test/Transforms/CorrelatedValuePropagation/basic.ll
+21-0llvm/test/Transforms/CorrelatedValuePropagation/icmp.ll
+79-02 files

LLVM/project cba6df9llvm/test/Transforms/InstCombine known-bits.ll

[ValueTracking] Add basic tests tracking `or disjoint` conditions as `add`; NFC
DeltaFile
+52-0llvm/test/Transforms/InstCombine/known-bits.ll
+52-01 files

LLVM/project 8ee5a3fclang/test/C/C99 n590.c, clang/test/C/C99/Inputs nested-include.h

[C99] Claim conformance to WG14 N590 (#86985)

This adds test coverage for implementation limits that were defined in
WG14 N590. The original content of that paper is not available, so this
actually tests against the limits as of C23.
DeltaFile
+390-0clang/test/C/C99/n590.c
+3-0clang/test/C/C99/Inputs/nested-include.h
+1-1clang/www/c_status.html
+394-13 files

LLVM/project 7be847elibcxxabi/test forced_unwind4.pass.cpp

[libc++abi] Disable forced_unwind4 test for musl. (#85096)

This test won't pass on musl, but we should still run it for other Linux
platforms.

rdar://123436716
DeltaFile
+2-2libcxxabi/test/forced_unwind4.pass.cpp
+2-21 files

LLVM/project d61ec51mlir/include/mlir/Dialect/SPIRV/Transforms SPIRVWebGPUTransforms.h, mlir/lib/Dialect/SPIRV/Transforms SPIRVWebGPUTransforms.cpp

[mlir][spirv] Add IsInf/IsNan expansion for WebGPU (#86903)

These non-finite math ops are supported by SPIR-V but not by WGSL.
Assume finite floating point values and expand these ops into `false`.

Previously, this worked by adding fast math flags during conversion from
arith to spirv, but this got removed in
https://github.com/llvm/llvm-project/pull/86578.

Also do some misc cleanups in the surrounding code.
DeltaFile
+41-13mlir/lib/Dialect/SPIRV/Transforms/SPIRVWebGPUTransforms.cpp
+32-0mlir/test/Dialect/SPIRV/Transforms/webgpu-prepare.mlir
+9-3mlir/include/mlir/Dialect/SPIRV/Transforms/SPIRVWebGPUTransforms.h
+82-163 files

LLVM/project 5990278clang/lib/Sema SemaConcept.cpp

[clang] Add invalid check in NormalizedConstraint::fromConstraintExpr. (#86943)

This is an oversight spot in #86869, we should always check the invalid
bit after constructing the `Sema::InstantiatingTemplate` RAII object.
DeltaFile
+2-0clang/lib/Sema/SemaConcept.cpp
+2-01 files

LLVM/project da5d576utils/bazel/llvm-project-overlay/mlir BUILD.bazel

[mlir] fix empty spaces in bazel file
DeltaFile
+1-1utils/bazel/llvm-project-overlay/mlir/BUILD.bazel
+1-11 files

LLVM/project 6582509llvm/lib/MC XCOFFObjectWriter.cpp, llvm/test/CodeGen/PowerPC aix-overflow-toc-data.py

[AIX] Handle toc-data offset overflowing 16-bits (#80092)

When the toc-data offset overflows the 16-bits, we can truncate the
value to the 16-bit value as the linker will handle overflow through
fixup code.
DeltaFile
+59-0llvm/test/CodeGen/PowerPC/aix-overflow-toc-data.py
+19-4llvm/lib/MC/XCOFFObjectWriter.cpp
+78-42 files

LLVM/project 0b79057mlir/lib/Dialect/Transform/IR TransformOps.cpp, mlir/test/Dialect/Transform foreach-match.mlir

[mlir] propagate silenceable failures in transform.foreach_match (#86956)

The original implementation was eagerly reporting silenceable failures
from actions as definite failures. Since silenceable failures are
intended for cases when the IR has not been irreversibly modified, it's
okay to propagate them as silenceable failures of the parent op.

Fixes #86834.
DeltaFile
+80-0mlir/test/Dialect/Transform/foreach-match.mlir
+15-2mlir/lib/Dialect/Transform/IR/TransformOps.cpp
+95-22 files

LLVM/project 2af3b43utils/bazel/llvm-project-overlay/mlir BUILD.bazel

[mlir] fix bazel error for MatchInterfaces dialect
DeltaFile
+4-4utils/bazel/llvm-project-overlay/mlir/BUILD.bazel
+4-41 files

LLVM/project aa7ae1bmlir/lib/Dialect/Tensor/Transforms PackAndUnpackPatterns.cpp, mlir/test/Dialect/Tensor fold-into-pack-and-unpack.mlir

[mlir][tensor] Fold producer linalg transpose with consumer unpack an… (#86795)

…d viceversa

-- Adds folding of producer linalg transpose op with consumer unpack op,
also adds folding of producer unpack op and consumer transpose op.
-- Minor bug fixes w.r.t. to the test cases.
DeltaFile
+125-20mlir/lib/Dialect/Tensor/Transforms/PackAndUnpackPatterns.cpp
+113-26mlir/test/Dialect/Tensor/fold-into-pack-and-unpack.mlir
+238-462 files

LLVM/project 6dceea3clang/lib/Headers/hlsl hlsl_intrinsics.h, clang/lib/Sema SemaChecking.cpp

[HLSL] prevent generation of wrong double intrinsics. (#86932)

As #86555, we should cover all of non-double builtins.

Closes #86818
DeltaFile
+0-18clang/lib/Headers/hlsl/hlsl_intrinsics.h
+0-13clang/test/CodeGenHLSL/builtins/ceil.hlsl
+0-13clang/test/CodeGenHLSL/builtins/floor.hlsl
+6-3clang/test/SemaHLSL/BuiltIns/half-float-only-errors.hlsl
+5-1clang/lib/Sema/SemaChecking.cpp
+11-485 files

LLVM/project f92ebf3flang/lib/Lower/OpenMP OpenMP.cpp, llvm/lib/Target/ARM/AsmParser ARMAsmParser.cpp

Rebase, address comments

Created using spr 1.3.5
DeltaFile
+931-5llvm/test/CodeGen/RISCV/GlobalISel/vararg.ll
+489-318openmp/libomptarget/plugins-nextgen/common/src/PluginInterface.cpp
+241-473llvm/test/CodeGen/X86/masked_store.ll
+258-237llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
+208-211flang/lib/Lower/OpenMP/OpenMP.cpp
+273-64mlir/test/Dialect/SCF/transform-loop-fuse-sibling.mlir
+2,400-1,308547 files not shown
+13,949-5,707553 files

LLVM/project 35e7d45bolt/lib/Rewrite LinuxKernelRewriter.cpp, bolt/test/X86 linux-bug-table.s

[BOLT] Add rewriting support for Linux kernel __bug_table (#86908)

Update instruction locations in the __bug_table section after new code
is emitted. If an instruction with associated bug ID was deleted,
overwrite its location with zero.
DeltaFile
+65-5bolt/lib/Rewrite/LinuxKernelRewriter.cpp
+16-5bolt/test/X86/linux-bug-table.s
+81-102 files

LLVM/project 237572fllvm/tools/spirv-tools CMakeLists.txt

[SPIR-V] Fix paths when copying spriv-dis and spirv-val on windows (#86876)

We need `CMAKE_EXECUTABLE_SUFFIX` here so we get the paths right when
they end in `.exe`.
DeltaFile
+2-2llvm/tools/spirv-tools/CMakeLists.txt
+2-21 files

LLVM/project 16b7cc6llvm/lib/Target/SystemZ SystemZISelLowering.cpp SystemZFrameLowering.cpp, llvm/test/CodeGen/SystemZ vector-constrained-fp-intrinsics.ll swifterror.ll

[SystemZ] Eliminate call sequence instructions early. (#77812)

On SystemZ, the outgoing argument area which is big enough for all calls
in the function is created once during the prolog, as opposed to
adjusting the stack around each call. The call-sequence instructions are
therefore not really useful any more than to compute the maximum call
frame size, which has so far been done by PEI, but can just as well be
done at an earlier point.

This patch removes the mapping of the CallFrameSetupOpcode and
CallFrameDestroyOpcode and instead computes the MaxCallFrameSize
directly after instruction selection and then removes the ADJCALLSTACK
pseudos. This removes the confusing pseudos and also avoids the problem
of having to keep the call frame size accurate when creating new MBBs.

This fixes #76618 which exposed the need to maintain the call frame size
when splitting blocks (which was not done).
DeltaFile
+24-0llvm/lib/Target/SystemZ/SystemZISelLowering.cpp
+8-8llvm/test/CodeGen/SystemZ/vector-constrained-fp-intrinsics.ll
+0-16llvm/lib/Target/SystemZ/SystemZFrameLowering.cpp
+4-4llvm/test/CodeGen/SystemZ/swifterror.ll
+0-6llvm/test/CodeGen/SystemZ/cond-move-regalloc-hints.mir
+3-3llvm/lib/Target/SystemZ/SystemZInstrInfo.td
+39-378 files not shown
+45-5014 files

LLVM/project 685d3f5bolt/lib/Profile BoltAddressTranslation.cpp YAMLProfileWriter.cpp

Get rid of std::map::at

Created using spr 1.3.4
DeltaFile
+4-1bolt/lib/Profile/BoltAddressTranslation.cpp
+2-1bolt/lib/Profile/YAMLProfileWriter.cpp
+6-22 files

LLVM/project 9f68c84flang/lib/Lower/OpenMP ReductionProcessor.cpp, flang/test/Lower/OpenMP wsloop-reduction-array-assumed-shape.f90

[flang][OpenMP] lower reductions of assumed shape arrays
DeltaFile
+90-0flang/test/Lower/OpenMP/wsloop-reduction-array-assumed-shape.f90
+22-3flang/lib/Lower/OpenMP/ReductionProcessor.cpp
+112-32 files

LLVM/project 1607e82llvm/lib/Analysis InlineCost.cpp, llvm/test/Transforms/SampleProfile remarks-hotness.ll

[InlineCost] Disable cost-benefit when sample based PGO is used (#86626)

#66457 makes InlineCost to use cost-benefit by default, which causes
0.4-0.5% performance regression on multiple internal workloads. See
discussions https://github.com/llvm/llvm-project/pull/66457. This pull
request reverts it.

Co-authored-by: helloguo <helloguo at meta.com>
DeltaFile
+2-2llvm/test/Transforms/SampleProfile/remarks-hotness.ll
+1-1llvm/lib/Analysis/InlineCost.cpp
+3-32 files

LLVM/project 6aee1f9libc/src/__support/FPUtil NearestIntegerOperations.h, libc/test/src/math/smoke UfromfpTest.h UfromfpxTest.h

[libc][math][c23] Fix bounds checking and add FE_INVALID raising in {,u}fromfp{,x}* (#86892)

See
https://github.com/llvm/llvm-project/pull/86692#issuecomment-2024044889
and
https://github.com/llvm/llvm-project/pull/86892#discussion_r1542276037.

cc @lntue @nickdesaulniers
DeltaFile
+233-119libc/test/src/math/smoke/UfromfpTest.h
+233-119libc/test/src/math/smoke/UfromfpxTest.h
+231-119libc/test/src/math/smoke/FromfpTest.h
+231-119libc/test/src/math/smoke/FromfpxTest.h
+47-5libc/src/__support/FPUtil/NearestIntegerOperations.h
+975-4815 files