Changes

Summary

  1. [CSSPGO][llvm-profgen] Truncate stack samples with invalid return address. (details)
  2. [obj2yaml][XCOFF] Dump sections (details)
  3. Add extra check for llvm::Any::TypeId visibility (details)
  4. [NPM] Added -print-pipeline-passes print params for a few passes. (details)
  5. [AArch64][GlobalISel] Add a new reassociation for G_PTR_ADDs. (details)
  6. [mlir][linalg] Update OpDSL doc (NFC). (details)
  7. [mlir] Update docs on conversion and translation to LLVM (details)
  8. [X86][InlineAsm] Use mem size information (*word ptr) for "global variable + registers" memory expression in inline asm. (details)
  9. [VPlan] Support sinking recipes with uniform users outside sink target. (details)
Commit 0057c7185d1cdbcfdaa9385f4b67e677066af8b8 by hoy
[CSSPGO][llvm-profgen] Truncate stack samples with invalid return address.

Invalid frame addresses exist in call stack samples due to bad unwinding. This could happen to frame-pointer-based unwinding and the callee functions that do not have the frame pointer chain set up. It isn't common when the program is built with the frame pointer omission disabled, but can still happen with third-party static libs built with frame pointer omitted.

Reviewed By: wenlei

Differential Revision: https://reviews.llvm.org/D109638
The file was addedllvm/test/tools/llvm-profgen/Inputs/cs-invalid-ret-addr.perfscript
The file was addedllvm/test/tools/llvm-profgen/cs-invalid-ret-addr.test
The file was modifiedllvm/tools/llvm-profgen/PerfReader.h
The file was modifiedllvm/tools/llvm-profgen/ProfiledBinary.h
The file was modifiedllvm/tools/llvm-profgen/PerfReader.cpp
Commit 945df8bc4cf3c72a9721431ec490e2f196be170e by esme.yi
[obj2yaml][XCOFF] Dump sections

Summary: This patch implements parsing sections for obj2yaml on AIX.

Reviewed By: jhenderson

Differential Revision: https://reviews.llvm.org/D98003
The file was modifiedllvm/tools/obj2yaml/xcoff2yaml.cpp
The file was addedllvm/test/tools/obj2yaml/XCOFF/invalid-symbol.yaml
The file was addedllvm/test/tools/obj2yaml/XCOFF/invalid-section.yaml
The file was modifiedllvm/test/tools/obj2yaml/XCOFF/aix.yaml
Commit 2c42a73d6c39af3833e697c0b306cb8cf8de5143 by sguelton
Add extra check for llvm::Any::TypeId visibility

This check should ensure we don't reproduce the problem fixed by
02df443d2801601a4e42e360e436d97314e9da30

More accurately, it checks every llvm::Any::TypeId symbol in libLLVM-x.so and
make sure they have weak linkage and are not local to the library, which would
lead to duplicate definition if another weak version of the symbol is defined in
another linked library.

Differential Revision: https://reviews.llvm.org/D109252
The file was modifiedllvm/test/lit.site.cfg.py.in
The file was addedllvm/test/tools/llvm-shlib/typeids.test
The file was modifiedllvm/test/lit.cfg.py
Commit 1ac209ed76cb233b672302b6171a4c76de3e56b2 by markus.lavin
[NPM] Added -print-pipeline-passes print params for a few passes.

Added '-print-pipeline-passes' printing of parameters for those passes
declared with *_WITH_PARAMS macro in PassRegistry.def.

Note that it only prints the parameters declared inside *_WITH_PARAMS as
in a few cases there appear to be additional parameters not parsable.

The following passes are now covered (i.e. all of those with *_WITH_PARAMS in
PassRegistry.def).

LoopExtractorPass - loop-extract
HWAddressSanitizerPass - hwsan
EarlyCSEPass - early-cse
EntryExitInstrumenterPass - ee-instrument
LowerMatrixIntrinsicsPass - lower-matrix-intrinsics
LoopUnrollPass - loop-unroll
AddressSanitizerPass - asan
MemorySanitizerPass - msan
SimplifyCFGPass - simplifycfg
LoopVectorizePass - loop-vectorize
MergedLoadStoreMotionPass - mldst-motion
GVN - gvn
StackLifetimePrinterPass - print<stack-lifetime>
SimpleLoopUnswitchPass - simple-loop-unswitch

Differential Revision: https://reviews.llvm.org/D109310
The file was modifiedllvm/lib/Transforms/Scalar/LoopUnrollPass.cpp
The file was modifiedllvm/lib/Transforms/Scalar/EarlyCSE.cpp
The file was modifiedllvm/include/llvm/Transforms/Scalar/EarlyCSE.h
The file was modifiedllvm/include/llvm/Transforms/Scalar/MergedLoadStoreMotion.h
The file was modifiedllvm/include/llvm/Transforms/Scalar/SimpleLoopUnswitch.h
The file was modifiedllvm/lib/Transforms/Utils/EntryExitInstrumenter.cpp
The file was modifiedllvm/include/llvm/Transforms/Scalar/GVN.h
The file was modifiedllvm/include/llvm/Transforms/Scalar/LoopUnrollPass.h
The file was modifiedllvm/lib/Transforms/Scalar/LowerMatrixIntrinsics.cpp
The file was modifiedllvm/include/llvm/Transforms/IPO/LoopExtractor.h
The file was modifiedllvm/lib/Analysis/StackLifetime.cpp
The file was modifiedllvm/include/llvm/Analysis/StackLifetime.h
The file was modifiedllvm/include/llvm/Transforms/Scalar/LowerMatrixIntrinsics.h
The file was modifiedllvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp
The file was modifiedllvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
The file was modifiedllvm/include/llvm/Transforms/Vectorize/LoopVectorize.h
The file was modifiedllvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp
The file was modifiedllvm/lib/Transforms/Scalar/SimpleLoopUnswitch.cpp
The file was modifiedllvm/include/llvm/Transforms/Instrumentation/AddressSanitizer.h
The file was modifiedllvm/include/llvm/Transforms/Instrumentation/MemorySanitizer.h
The file was modifiedllvm/lib/Transforms/Vectorize/LoopVectorize.cpp
The file was modifiedllvm/lib/Transforms/Scalar/GVN.cpp
The file was modifiedllvm/lib/Transforms/Scalar/MergedLoadStoreMotion.cpp
The file was modifiedllvm/include/llvm/Transforms/Instrumentation/HWAddressSanitizer.h
The file was modifiedllvm/include/llvm/Transforms/Utils/EntryExitInstrumenter.h
The file was modifiedllvm/lib/Transforms/IPO/LoopExtractor.cpp
The file was modifiedllvm/test/Other/new-pm-print-pipeline.ll
Commit 5ec1845cad9e2bce4eff78b6c7d7c0fca8dfffba by Amara Emerson
[AArch64][GlobalISel] Add a new reassociation for G_PTR_ADDs.

G_PTR_ADD (G_PTR_ADD X, C), Y) -> (G_PTR_ADD (G_PTR_ADD(X, Y), C)

Improves CTMark -Os on AArch64:

Program            before after  diff
           sqlite3 286932 287024  0.0%
                kc 432512 432508 -0.0%
             SPASS 412788 412764 -0.0%
    pairlocalalign 249460 249416 -0.0%
            bullet 475740 475512 -0.0%
    7zip-benchmark 568864 568356 -0.1%
  consumer-typeset 419088 418648 -0.1%
        tramp3d-v4 367628 367224 -0.1%
          clamscan 383184 382732 -0.1%
            lencod 430028 429284 -0.2%
Geomean difference               -0.1%

Differential Revision: https://reviews.llvm.org/D109528
The file was modifiedllvm/test/CodeGen/AArch64/GlobalISel/combine-ptradd-reassociation.mir
The file was modifiedllvm/include/llvm/CodeGen/GlobalISel/CombinerHelper.h
The file was modifiedllvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp
The file was modifiedllvm/test/CodeGen/AMDGPU/GlobalISel/mubuf-global.ll
Commit a543abc5ea65bc1a9fc322d41d40af3c5abb954d by gysit
[mlir][linalg] Update OpDSL doc (NFC).

Update the doc due to recent path changes an point to a helper script.
The file was modifiedmlir/docs/Dialects/Linalg/OpDSL.md
Commit b10940edfc7d0eef4388202165295b665afb3e68 by zinenko
[mlir] Update docs on conversion and translation to LLVM

Create a new document that explain both stages of the process in a single
place, merge and deduplicate the content from the two previous documents. Also
extend the documentation to account for the recent changes in pass structure
due to standard dialect splitting and translation being more flexible.

Reviewed By: aartbik

Differential Revision: https://reviews.llvm.org/D109605
The file was removedmlir/docs/ConversionToLLVMDialect.md
The file was removedmlir/docs/LLVMDialectMemRefConvention.md
The file was addedmlir/docs/TargetLLVMIR.md
Commit 1f1c71aeacc1c4eab385c074714508b6e7121f73 by xiang1.zhang
[X86][InlineAsm] Use mem size information (*word ptr) for "global variable + registers" memory expression in inline asm.

Differential Revision: https://reviews.llvm.org/D109739
The file was modifiedllvm/lib/Target/X86/AsmParser/X86AsmParser.cpp
The file was addedclang/test/CodeGen/X86/ms_fmul.c
Commit e90d55e1c9e76ade72933804d050b7ae8dbd674b by flo
[VPlan] Support sinking recipes with uniform users outside sink target.

This is a first step towards addressing the last remaining limitation of
the VPlan version of sinkScalarOperands: the legacy version can
partially sink operands. For example, if a GEP has uniform users outside
the sink target block, then the legacy version will sink all scalar
GEPs, other than the one for lane 0.

This patch works towards addressing this case in the VPlan version by
detecting such cases and duplicating the sink candidate. All users
outside of the sink target will be updated to use the uniform clone.

Note that this highlights an issue with VPValue naming. If we duplicate
a replicate recipe, they will share the same underlying IR value and
both VPValues will have the same name ir<%gep>.

Reviewed By: Ayal

Differential Revision: https://reviews.llvm.org/D104254
The file was modifiedllvm/test/Transforms/LoopVectorize/vplan-sink-scalars-and-merge.ll
The file was modifiedllvm/test/Transforms/LoopVectorize/float-induction.ll
The file was modifiedllvm/test/Transforms/LoopVectorize/if-pred-stores.ll
The file was modifiedllvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
The file was modifiedllvm/test/Transforms/LoopVectorize/loop-form.ll