SuccessChanges

Summary

  1. [gn build] Port bbab9f986c6d (details)
  2. [mlir][StandardToSPIRV] Add support for lowering memref<?xi1> to SPIR-V (details)
  3. [AArch64][v8.5A] Add BTI to all function starts (details)
  4. [SLP] createOp - fix null dereference warning. NFCI. (details)
  5. [X86][SSE] canonicalizeShuffleWithBinOps - check for more combos of merge-able binary shuffles. (details)
  6. [AMDGPU] Rename "LDS lowering" pass name. (details)
  7. [Instcombine] Disable memcpy of alloca bypass for instruction sources (details)
  8. [X86] Add PR49028 test case (details)
  9. Add flag for showing skipped headers in -H / --show-includes output (details)
  10. clang-format: [JS] merge import lines. (details)
  11. review comments (details)
Commit 34367dd2535c576d0fecbb803b38ada9918dc5e7 by llvmgnsyncbot
[gn build] Port bbab9f986c6d
The file was modifiedllvm/utils/gn/secondary/llvm/lib/Transforms/Utils/BUILD.gn
Commit 7c4de2e9b9b469b073e6f5f044977b23ac1b26c6 by hanchung
[mlir][StandardToSPIRV] Add support for lowering memref<?xi1> to SPIR-V

Reviewed By: antiagainst

Differential Revision: https://reviews.llvm.org/D100452
The file was modifiedmlir/lib/Dialect/SPIRV/Transforms/SPIRVConversion.cpp
The file was modifiedmlir/test/Conversion/StandardToSPIRV/std-types-to-spirv.mlir
Commit cca40aa8d8aa732a226c8978e53cd47e7b7c76ec by pablo.barrio
[AArch64][v8.5A] Add BTI to all function starts

The existing BTI placement pass avoids inserting "BTI c" when the
function has local linkage and is only directly called. However,
even in this case, there is a (small) chance that the linker later
adds a hunk with an indirect call to the function, e.g. if the
function is placed in a separate section and moved far away from
its callers. Make sure to add BTI for these functions too.

Differential Revision: https://reviews.llvm.org/D99417
The file was modifiedllvm/lib/Target/AArch64/AArch64BranchTargets.cpp
The file was modifiedllvm/test/CodeGen/AArch64/patchable-function-entry-bti.ll
The file was modifiedllvm/test/CodeGen/AArch64/branch-target-enforcement.mir
Commit b49c41afbaa212cc15343af68c3293ab929a2d34 by llvm-dev
[SLP] createOp - fix null dereference warning. NFCI.

Only attempt to propagateIRFlags if we have both SelectInst - afaict we shouldn't have matched a min/max reduction without both SelectInst, but static analyzer doesn't know that.
The file was modifiedllvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
Commit 4fbe7615721863c57b4fd4334f361a5d4157e235 by llvm-dev
[X86][SSE] canonicalizeShuffleWithBinOps - check for more combos of merge-able binary shuffles.

In the fold SHUFFLE(BINOP(X,Y),BINOP(Z,W)) -> BINOP(SHUFFLE(X,Z),SHUFFLE(Y,W)), check if both X/Z AND Y/W have at least one merge-able shuffle in which case the total number of shuffle should still fall.

Helps with instruction count regressions we saw while fixing PR48823
The file was modifiedllvm/lib/Target/X86/X86ISelLowering.cpp
The file was modifiedllvm/test/CodeGen/X86/haddsub-3.ll
Commit e3070db0f7049fdbd75955b3e68a3d2bc4936e48 by mahesha.comp
[AMDGPU] Rename "LDS lowering" pass name.

Rename the name of "LDS lowering" pass from `amdgpu-disable-lower-module-lds` to
`amdgpu-enable-lower-module-lds` as later is consistent and reads better.

Reviewed By: JonChesterfield

Differential Revision: https://reviews.llvm.org/D100441
The file was modifiedllvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
The file was modifiedllvm/test/CodeGen/AMDGPU/GlobalISel/lds-global-non-entry-func.ll
The file was modifiedllvm/test/CodeGen/AMDGPU/lds-global-non-entry-func.ll
The file was modifiedllvm/test/CodeGen/AMDGPU/promote-alloca-to-lds-constantexpr-use.ll
The file was modifiedllvm/test/CodeGen/AMDGPU/addrspacecast-initializer-unsupported.ll
Commit cf4161673c7e7c7c57d8115468bfcc9988f43d36 by benny.kra
[Instcombine] Disable memcpy of alloca bypass for instruction sources

This transformation is fundamentally broken when it comes to dominance,
it just happened to work when the source of the memcpy can be moved into
the place of the alloca. The bug shows up a lot more often since
077bff39d46364035a5dcfa32fc69910ad0975d0 allows the source to be a
switch.

It would be possible to check dominance of the source and all its
operands, but that seems very heavy for instcombine.
The file was modifiedllvm/test/Transforms/InstCombine/tmp-alloca-bypass.ll
The file was modifiedllvm/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp
Commit c4c9e4d6df3c492cf86728288b14a9bc718f6e2d by llvm-dev
[X86] Add PR49028 test case
The file was addedllvm/test/CodeGen/X86/pr49028.ll
Commit f29dcbdde10c86cfd89196fc2aa0e7f6ca3c9c4e by hans
Add flag for showing skipped headers in -H / --show-includes output

Consider the following set of files:

  a.cc:
  #include "a.h"

  a.h:
  #ifndef A_H
  #define A_H

  #include "b.h"
  #include "c.h"  // This gets "skipped".

  #endif

  b.h:
  #ifndef B_H
  #define B_H

  #include "c.h"

  #endif

  c.h:
  #ifndef C_H
  #define C_H

  void c();

  #endif

And the output of the -H option:

  $ clang -c -H a.cc
  . ./a.h
  .. ./b.h
  ... ./c.h

Note that the include of c.h in a.h is not shown in the output (GCC does the
same). This is because of the include guard optimization: clang knows c.h is
covered by an include guard which is already defined, so when it sees the
include in a.h, it skips it. The same would have happened if #pragma once were
used instead of include guards.

However, a.h *does* include c.h, and it may be useful to show that in the -H
output. This patch adds a flag for doing that.

Differential revision: https://reviews.llvm.org/D100480
The file was modifiedclang/include/clang/Driver/Options.td
The file was modifiedclang/lib/Frontend/HeaderIncludeGen.cpp
The file was modifiedclang/test/Frontend/Inputs/test2.h
The file was modifiedclang/test/Frontend/print-header-includes.c
The file was modifiedclang/include/clang/Frontend/DependencyOutputOptions.h
The file was modifiedclang/test/Frontend/Inputs/test.h
Commit d45df0d29f7005d3c25357f3982002eaf339f875 by martin
clang-format: [JS] merge import lines.

Multiple lines importing from the same URL can be merged:

    import {X} from 'a';
    import {Y} from 'a';

Merge to:

    import {X, Y} from 'a';

This change implements this merge operation. It takes care not to merge in
various corner case situations (default imports, star imports).

Differential Revision: https://reviews.llvm.org/D100466
The file was modifiedclang/lib/Format/SortJavaScriptImports.cpp
The file was modifiedclang/unittests/Format/SortImportsTestJS.cpp
Commit 4d195f1b4dd6e3978776d69f49840439933a2543 by martin
review comments

track symbol merge status in references to avoid excesive rewrites
The file was modifiedclang/unittests/Format/SortImportsTestJS.cpp
The file was modifiedclang/lib/Format/SortJavaScriptImports.cpp