SuccessChanges

Summary

  1. Clean up test file, NFC (details)
  2. [PowerPC] Implement Vector signed/unsigned __int128 overloads for the comparison builtins (details)
  3. [PowerPC] Implement the 128-bit vec_[all|any]_[eq | ne | lt | gt | le | ge] builtins in Clang/LLVM (details)
  4. Recommit [NFC] Refactor DiagnosticBuilder and PartialDiagnostic (details)
  5. [AArch64] Expand some vector of i64 reductions on NEON (details)
  6. [SelectionDAG][GISel] Make LegalizeDAG lower FNEG using integer ops. (details)
  7. [JSON] Allow emitting comments in json::OStream (details)
  8. [lld-macho] cleanup unimplemented-option warnings (details)
  9. [X86] Add a memory clobber to the bittest intrinsic inline asm. Get default clobbers from the target (details)
  10. [lld-macho] handle options -search_paths_first, -search_dylibs_first (details)
  11. [JSON] Facility to track position within an object and report errors. (details)
  12. [NewPM][MSSA] Fix failures under NPM due to -enable-mssa-loop-dependency (details)
  13. [NewPM][CGSCC] Handle newly added functions in updateCGAndAnalysisManagerForPass (details)
  14. [NewPM] Add callbacks to PassBuilder to run before/after parsing a pass (details)
  15. [JSON] Display errors associated with Paths in context (details)
Commit 57f097420d43adf3f38d66b31ed4ef49da62ae75 by kparzysz
Clean up test file, NFC
The file was modifiedllvm/test/Transforms/EarlyCSE/getmatchingvalue-crash.ll
Commit 88cdbeab417cc716d1da2de2a508d24622f4a4bc by conanap
[PowerPC] Implement Vector signed/unsigned __int128 overloads for the comparison builtins

This patch implements Vector signed/unsigned __int128 overloads for the comparison builtins.

Differential Revision: https://reviews.llvm.org/D87804
The file was modifiedclang/include/clang/Basic/BuiltinsPPC.def
The file was modifiedllvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
The file was modifiedclang/test/CodeGen/builtins-ppc-p10vector.c
The file was modifiedclang/lib/Headers/altivec.h
The file was addedllvm/test/CodeGen/PowerPC/vec_cmpq.ll
The file was modifiedllvm/include/llvm/IR/IntrinsicsPowerPC.td
The file was modifiedllvm/lib/Target/PowerPC/PPCISelLowering.cpp
Commit 2e7117f847708d2fd1ff2d2961c3439470532b80 by conanap
[PowerPC] Implement the 128-bit vec_[all|any]_[eq | ne | lt | gt | le | ge] builtins in Clang/LLVM

This patch implements the vec_[all|any]_[eq | ne | lt | gt | le | ge] builtins for vector signed/unsigned __int128.

Differential Revision: https://reviews.llvm.org/D87910
The file was modifiedclang/lib/CodeGen/CGExprScalar.cpp
The file was modifiedclang/include/clang/Basic/BuiltinsPPC.def
The file was modifiedllvm/test/CodeGen/PowerPC/vec_cmpq.ll
The file was modifiedclang/test/CodeGen/builtins-ppc-p10vector.c
The file was modifiedllvm/include/llvm/IR/IntrinsicsPowerPC.td
The file was modifiedclang/lib/Headers/altivec.h
The file was modifiedllvm/lib/Target/PowerPC/PPCISelLowering.cpp
Commit 8e780a1653e6f87755a447e921b8f929d8b70996 by Yaxun.Liu
Recommit [NFC] Refactor DiagnosticBuilder and PartialDiagnostic

This recommits 829d14ee0a6aa79c89f7f3d9fcd9d27d3efd2b91.

The patch was reverted due to a regression in some CUDA app
which was thought to be caused by this patch. However, investigation
showed that the regression was due to some other issues, therefore
recommit this patch.
The file was modifiedclang/include/clang/AST/TemplateName.h
The file was modifiedclang/lib/Basic/Diagnostic.cpp
The file was modifiedclang/include/clang/Basic/PartialDiagnostic.h
The file was modifiedclang/include/clang/Sema/ParsedAttr.h
The file was modifiedclang/include/clang/AST/Attr.h
The file was modifiedclang/include/clang/AST/Type.h
The file was modifiedclang/include/clang/AST/TemplateBase.h
The file was modifiedclang/include/clang/Basic/Diagnostic.h
The file was modifiedclang/include/clang/Sema/Sema.h
The file was modifiedclang/include/clang/AST/ASTContext.h
The file was modifiedclang/lib/AST/DeclCXX.cpp
The file was modifiedclang/include/clang/AST/CanonicalType.h
The file was modifiedclang/include/clang/AST/NestedNameSpecifier.h
The file was modifiedclang/include/clang/AST/Decl.h
The file was modifiedclang/lib/AST/ASTContext.cpp
The file was modifiedclang/lib/AST/TemplateName.cpp
The file was modifiedclang/include/clang/AST/DeclarationName.h
The file was modifiedclang/include/clang/AST/DeclCXX.h
The file was modifiedclang/include/clang/Sema/Ownership.h
The file was modifiedclang/lib/AST/TemplateBase.cpp
Commit e8413ac97f6ca2b1897cc9555ad9b0194456629f by mcinally
[AArch64] Expand some vector of i64 reductions on NEON

With the exception of VECREDUCE_ADD, there are no NEON instructions to support vector of i64 reductions. This patch removes the Custom lowerings for those and adds some test coverage to confirm.

Differential Revision: https://reviews.llvm.org/D88161
The file was modifiedllvm/test/CodeGen/AArch64/vecreduce-umax-legalization.ll
The file was modifiedllvm/lib/Target/AArch64/AArch64ISelLowering.cpp
The file was modifiedllvm/test/CodeGen/AArch64/aarch64-addv.ll
Commit 3f739f736b8fed6f4d63569f56c985ef04b21cd1 by efriedma
[SelectionDAG][GISel] Make LegalizeDAG lower FNEG using integer ops.

Previously, if a floating-point type was legal, but FNEG wasn't legal,
we would use FSUB.  Instead, we should use integer ops, to preserve the
semantics.  (Alternatively, there's a compiler-rt call we could use, but
there isn't much reason to use that.)

It turns out we actually are still using this obscure codepath in a few
cases: on some targets, we have "legal" floating-point types that don't
actually support any floating-point operations.  In particular, ARM and
AArch64 are using this path.

The implementation for SelectionDAG is pretty simple because we can
reuse the infrastructure from FCOPYSIGN.

See also 9a3dc3e, the corresponding change to type legalization.

Also includes a "bonus" change to STRICT_FSUB legalization, so we can
lower a STRICT_FSUB to a float libcall.

Includes the changes to both LegalizeDAG and GlobalISel so we don't have
inconsistent results in the future.

Fixes https://bugs.llvm.org/show_bug.cgi?id=46792 .

Differential Revision: https://reviews.llvm.org/D84287
The file was modifiedllvm/test/CodeGen/Thumb2/mve-fp-negabs.ll
The file was modifiedllvm/test/CodeGen/ARM/GlobalISel/arm-legalize-fp.mir
The file was modifiedllvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
The file was modifiedllvm/test/CodeGen/AArch64/arm64-fp128.ll
The file was modifiedllvm/test/CodeGen/X86/GlobalISel/legalize-fneg.mir
The file was modifiedllvm/lib/Target/ARM/ARMLegalizerInfo.cpp
The file was modifiedllvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
The file was modifiedllvm/test/CodeGen/ARM/GlobalISel/arm-legalize-binops.mir
Commit 140b7b6f09ca01f89701ccc86ddd8553cf42c311 by sam.mccall
[JSON] Allow emitting comments in json::OStream

This isn't standard JSON, but is a popular extension.
It will be used to show errors in context, rendering pseudo-json for humans.

Differential Revision: https://reviews.llvm.org/D88103
The file was modifiedllvm/include/llvm/Support/JSON.h
The file was modifiedllvm/lib/Support/JSON.cpp
The file was modifiedllvm/unittests/Support/JSONTest.cpp
Commit fa5f9452120cc1691d23e272697695a5a4331f9c by gkm
[lld-macho] cleanup unimplemented-option warnings

Remove all spurious `HelpHidden` flags from  `lld/MachO/Options.td`. Add test for `HelpHidden` to `warnIfUnimplementedOption()` so that the empty `// handled elsewhere` case is unnecessary.

Reviewed By: #lld-macho, int3, smeenai

Differential Revision: https://reviews.llvm.org/D88160
The file was modifiedlld/MachO/Options.td
The file was modifiedlld/MachO/Driver.cpp
Commit d9717d8ee7143f4f5b768dfb5e8629ecfa067e39 by craig.topper
[X86] Add a memory clobber to the bittest intrinsic inline asm. Get default clobbers from the target

I believe the inline asm emitted here should have a memory clobber since it writes to memory.

It was also missing the dirflag clobber that we use by default along with flags and fpsr. To avoid missing defaults in the future, get the default list from the target

Differential Revision: https://reviews.llvm.org/D88121
The file was modifiedclang/test/CodeGen/bittest-intrin.c
The file was modifiedclang/lib/CodeGen/CGBuiltin.cpp
Commit 8f2c31f22b974da2c0fbc5de0ce4dceffe8ed0b8 by gkm
[lld-macho] handle options -search_paths_first, -search_dylibs_first

Differential Revision: https://reviews.llvm.org/D88054
The file was modifiedlld/MachO/Config.h
The file was modifiedlld/MachO/Options.td
The file was modifiedlld/test/MachO/link-search-order.s
The file was modifiedlld/MachO/Driver.cpp
Commit 16619e7139bdcb0021598ba76cb5cf30ac669dbb by sam.mccall
[JSON] Facility to track position within an object and report errors.

This error model should be rich enough for most applications. It comprises:

- a name for the root object, so the user knows what we're parsing
- a path from the root object to the JSON node most associated with the error
- a local error message

This can be presented as an llvm::Error e.g.
  "expected string at ConfigFile.credentials[0].username"

It's designed to be cheap: Paths are a linked list of lightweight
objects on the stack. No heap allocations unless errors are encountered.

A subsequent commit will make use of this in the JSON-to-object
translation facilities: fromJSON and ObjectMapper.
However it's independent of these and can be used for e.g. validation alone.

Another subsequent commit will support showing the error in its context
within the parsed value.

Differential Revision: https://reviews.llvm.org/D88103
The file was modifiedllvm/unittests/Support/JSONTest.cpp
The file was modifiedllvm/include/llvm/Support/JSON.h
The file was modifiedllvm/lib/Support/JSON.cpp
Commit 6700b9de1637fd9888dfe9628157d2aeb6d9f526 by aeubanks
[NewPM][MSSA] Fix failures under NPM due to -enable-mssa-loop-dependency

Reviewed By: asbirlea

Differential Revision: https://reviews.llvm.org/D88128
The file was modifiedllvm/test/Transforms/LICM/argmemonly-call.ll
The file was modifiedllvm/test/Transforms/LICM/atomics.ll
The file was modifiedllvm/test/Transforms/LICM/promote-order.ll
The file was modifiedllvm/test/Transforms/LICM/store-hoisting.ll
The file was modifiedllvm/test/Analysis/BasicAA/store-promote.ll
The file was modifiedllvm/test/Transforms/LICM/read-only-calls.ll
Commit 6b1ce83a1238815899cf18f69bbc0eb37679a410 by aeubanks
[NewPM][CGSCC] Handle newly added functions in updateCGAndAnalysisManagerForPass

This seems to fit the CGSCC updates model better than calling
addNewFunctionInto{Ref,}SCC() on newly created/outlined functions.
Now addNewFunctionInto{Ref,}SCC() are no longer necessary.

However, this doesn't work on newly outlined functions that aren't
referenced by the original function. e.g. if a() was outlined into b()
and c(), but c() is only referenced by b() and not by a(), this will
trigger an assert.

This also fixes an issue I was seeing with newly created functions not
having passes run on them.

Ran check-llvm with expensive checks.

Reviewed By: asbirlea

Differential Revision: https://reviews.llvm.org/D87798
The file was modifiedllvm/include/llvm/Analysis/LazyCallGraph.h
The file was modifiedllvm/lib/Transforms/Utils/CallGraphUpdater.cpp
The file was modifiedllvm/unittests/Analysis/LazyCallGraphTest.cpp
The file was modifiedllvm/lib/Transforms/Coroutines/CoroSplit.cpp
The file was modifiedllvm/unittests/Analysis/CGSCCPassManagerTest.cpp
The file was modifiedllvm/lib/Analysis/CGSCCPassManager.cpp
The file was modifiedllvm/lib/Analysis/LazyCallGraph.cpp
Commit 111aa4e36614d9a056cf5040d4d7bbfddeb9ebb2 by aeubanks
[NewPM] Add callbacks to PassBuilder to run before/after parsing a pass

This is in preparation for supporting -debugify-each, which adds a debug
info pass before and after each pass.

Switch VerifyEach to use this.

Reviewed By: ychen

Differential Revision: https://reviews.llvm.org/D88107
The file was modifiedllvm/tools/llvm-opt-fuzzer/llvm-opt-fuzzer.cpp
The file was modifiedpolly/lib/Support/RegisterPasses.cpp
The file was modifiedllvm/include/llvm/Passes/PassBuilder.h
The file was modifiedllvm/lib/Passes/PassBuilder.cpp
The file was modifiedllvm/unittests/IR/PassBuilderCallbacksTest.cpp
The file was modifiedllvm/tools/opt/NewPMDriver.cpp
Commit 38de1c33a8374bb16abfb024a973d851c170bafc by sam.mccall
[JSON] Display errors associated with Paths in context

When an error occurs processing a JSON object, seeing the actual
surrounding data helps. Dumping just the node where the problem
was identified can be too much or too little information.

printErrorContext() shows the error message in its context, as a comment.
JSON values along the path to the broken place are shown in some detail,
the rest of the document is elided. For example:

```
{
  "credentials": [
    {
      "username": /* error: expected string */ 42,
      "password": "secret"
    },
    { ... }
  ]
  "backups": { ... }
}
```

Differential Revision: https://reviews.llvm.org/D88103
The file was modifiedllvm/include/llvm/Support/JSON.h
The file was modifiedllvm/unittests/Support/JSONTest.cpp
The file was modifiedllvm/lib/Support/JSON.cpp