Changes from Git (git http://labmaster3.local/git/llvm-project.git)


  1. [VPlan] Manage scalarized values using VPValues. (details)
  2. [clangd] Factor out the heuristic resolver code into its own class (details)
  3. [gn build] Port 9510b0940265 (details)
  4. [flang][f18] Make -fdebug-dump-{symbols|parse-tree} imply -fsyntax-only (details)
  5. Lower math.expm1 to intrinsics in the GPUToNVVM and GPUToROCDL conversions. (details)
  6. [SCEVExpander] Migrate costAndCollectOperands to use InstructionCost. (details)
  7. [flang][driver] Add options for unparsing (details)
  8. [mlir][Linalg] Generalize vector::transfer hoisting on tensors. (details)
Commit 54a14c264a245ae31e40581ab21be2ca5b6b1962 by flo
[VPlan] Manage scalarized values using VPValues.

This patch updates codegen to use VPValues to manage the generated
scalarized instructions.

Reviewed By: gilr

Differential Revision:
The file was modifiedllvm/lib/Transforms/Vectorize/VPlanValue.h
The file was modifiedllvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
The file was modifiedllvm/lib/Transforms/Vectorize/VPlan.cpp
The file was modifiedllvm/lib/Transforms/Vectorize/LoopVectorize.cpp
The file was modifiedllvm/test/Transforms/LoopVectorize/vplan-printing.ll
The file was modifiedllvm/lib/Transforms/Vectorize/VPlan.h
Commit 9510b09402659e6ba6e29b9caf0504c89bc72871 by zeratul976
[clangd] Factor out the heuristic resolver code into its own class

The patch also does some cleanup on the interface of the entry
points from TargetFinder into the heuristic resolution code.

Since the heuristic resolver is created in a place where the
ASTContext is available, it can store the ASTContext and the
NameFactory hack can be removed.

Differential revision:
The file was modifiedclang-tools-extra/clangd/Hover.cpp
The file was modifiedclang-tools-extra/clangd/FindTarget.h
The file was addedclang-tools-extra/clangd/HeuristicResolver.cpp
The file was modifiedclang-tools-extra/clangd/refactor/tweaks/RemoveUsingNamespace.cpp
The file was modifiedclang-tools-extra/clangd/FindTarget.cpp
The file was modifiedclang-tools-extra/clangd/ParsedAST.h
The file was modifiedclang-tools-extra/clangd/refactor/tweaks/ExtractFunction.cpp
The file was modifiedclang-tools-extra/clangd/CMakeLists.txt
The file was addedclang-tools-extra/clangd/HeuristicResolver.h
The file was modifiedclang-tools-extra/clangd/ASTSignals.cpp
The file was modifiedclang-tools-extra/clangd/ParsedAST.cpp
The file was modifiedclang-tools-extra/clangd/refactor/Rename.cpp
The file was modifiedclang-tools-extra/clangd/unittests/FindTargetTests.cpp
The file was modifiedclang-tools-extra/clangd/refactor/tweaks/DefineOutline.cpp
The file was modifiedclang-tools-extra/clangd/refactor/tweaks/DefineInline.cpp
The file was modifiedclang-tools-extra/clangd/XRefs.cpp
The file was modifiedclang-tools-extra/clangd/SemanticHighlighting.cpp
Commit 72af70127c4c8ca582e58cc3dee5466083adadb0 by llvmgnsyncbot
[gn build] Port 9510b0940265
The file was modifiedllvm/utils/gn/secondary/clang-tools-extra/clangd/
Commit 548549e88ac4a1908206b888be24592e1dbcc38f by andrzej.warzynski
[flang][f18] Make -fdebug-dump-{symbols|parse-tree} imply -fsyntax-only

The following _action_ options are always used with `-fsyntax-only`
(also an _action_ option):
  * -fdebug-dump-symbols
  * -fdebug-dump-parse-tree
This patch makes the above options imply `-fsyntax-only`.

From the perspective of `f18` this change saves typing and is otherwise
a non-functional change. But it will simplify things in the new driver,
`flang-new`, in which only the last action option is taken into account
and executed. In other words, the following would only run
flang-new -fdebug-dump-symbols -fsyntax-only <input>
whereas this would only run `-fdebug-dump-symbols`:
flang-new -fsyntax-only -fdebug-dump-symbols <input>

Differential Revision:
The file was modifiedflang/test/Semantics/rewrite01.f90
The file was modifiedflang/test/Evaluate/
The file was modifiedflang/test/Semantics/resolve100.f90
The file was modifiedflang/test/Semantics/offsets02.f90
The file was modifiedflang/test/Semantics/oldparam01.f90
The file was modifiedflang/test/Semantics/oldparam02.f90
The file was modifiedflang/tools/f18/f18.cpp
The file was modifiedflang/test/Semantics/offsets01.f90
The file was modifiedflang/test/Semantics/data08.f90
The file was modifiedflang/test/Semantics/typeinfo01.f90
The file was modifiedflang/test/Semantics/data05.f90
The file was modifiedflang/test/Semantics/offsets03.f90
Commit 07cc77187a2fb558c5642f267a83b3621498f381 by akuegel
Lower math.expm1 to intrinsics in the GPUToNVVM and GPUToROCDL conversions.

This adds the lowering for expm1 for GPU backends.

Differential Revision:
The file was modifiedmlir/test/Conversion/GPUToNVVM/gpu-to-nvvm.mlir
The file was modifiedmlir/lib/Conversion/GPUToROCDL/LowerGpuOpsToROCDLOps.cpp
The file was modifiedmlir/test/Conversion/GPUToROCDL/gpu-to-rocdl.mlir
The file was modifiedmlir/lib/Conversion/GPUToNVVM/LowerGpuOpsToNVVMOps.cpp
Commit 00fe10c6a65173c9c578babd19f8fee44d07a761 by sander.desmalen
[SCEVExpander] Migrate costAndCollectOperands to use InstructionCost.

This patch changes costAndCollectOperands to use InstructionCost for
accumulated cost values.

isHighCostExpansion will return true if the cost has exceeded the budget.

Reviewed By: CarolineConcatto, ctetreau

Differential Revision:
The file was modifiedllvm/include/llvm/Transforms/Utils/ScalarEvolutionExpander.h
The file was modifiedllvm/lib/Transforms/Utils/ScalarEvolutionExpander.cpp
Commit 96d229c9abdfb2836e18a554bfb63b5d52aeebfa by andrzej.warzynski
[flang][driver] Add options for unparsing

This patch adds the following compiler frontend driver options:
  * -fdebug-unparse (f18 spelling: -funparse)
  * -fdebug-unparse-with-symbols (f18 spelling: -funparse-with-symbols)
The new driver will only accept the new spelling. `f18` will accept both
the original and the new spelling.

A new base class for frontend actions is added: `PrescanAndSemaAction`.
This is added to reduce code duplication that otherwise these new
options would lead to. Implementation from
  * `ParseSyntaxOnlyAction::ExecutionAction`
is moved to:
  * `PrescanAndSemaAction::BeginSourceFileAction`
This implementation is now shared between:
  * PrescanAndSemaAction
  * ParseSyntaxOnlyAction
  * DebugUnparseAction
  * DebugUnparseWithSymbolsAction

All tests that don't require other yet unimplemented options are
updated. This way `flang-new -fc1` is used instead of `f18` when
`FLANG_BUILD_NEW_DRIVER` is set to `On`. In order to facilitate this,
`%flang_fc1` is added in the LIT configuration (

`asFortran` from f18.cpp is duplicated as `getBasicAsFortran` in
FrontendOptions.cpp. At this stage it's hard to find a good place to
share this method. I suggest that we revisit this once a switch from
`f18` to `flang-new` is complete.

Differential Revision:
The file was modifiedflang/test/Flang-Driver/driver-help.f90
The file was modifiedflang/test/Semantics/canondo02.f90
The file was modifiedflang/lib/Frontend/CMakeLists.txt
The file was modifiedflang/test/Semantics/doconcurrent03.f90
The file was modifiedflang/include/flang/Frontend/FrontendActions.h
The file was modifiedflang/test/Semantics/label08.f90
The file was modifiedflang/test/Semantics/canondo05.f90
The file was modifiedflang/test/Semantics/canondo01.f90
The file was modifiedflang/test/Semantics/label02.f90
The file was modifiedflang/test/
The file was modifiedflang/test/Semantics/label13.f90
The file was modifiedflang/test/Semantics/critical04.f90
The file was modifiedflang/test/Semantics/defined-ops.f90
The file was modifiedflang/test/Semantics/label09.f90
The file was modifiedflang/test/Semantics/label10.f90
The file was modifiedflang/test/Semantics/canondo04.f90
The file was modifiedflang/test/Parser/continuation-in-if.f
The file was modifiedflang/test/Semantics/label03.f90
The file was modifiedflang/test/Semantics/label06.f90
The file was modifiedflang/test/Semantics/doconcurrent07.f90
The file was modifiedflang/test/Semantics/label04.f90
The file was modifiedflang/test/Semantics/canondo03.f90
The file was modifiedflang/test/Semantics/doconcurrent02.f90
The file was modifiedflang/lib/Frontend/CompilerInvocation.cpp
The file was modifiedflang/test/Parser/pp-dir-comments.f90
The file was modifiedflang/test/Semantics/label07.f90
The file was modifiedflang/tools/f18/f18.cpp
The file was modifiedflang/test/Semantics/label15.f90
The file was modifiedclang/include/clang/Driver/
The file was modifiedflang/lib/Parser/CMakeLists.txt
The file was modifiedflang/lib/Frontend/FrontendActions.cpp
The file was modifiedflang/include/flang/Frontend/FrontendOptions.h
The file was modifiedflang/lib/Frontend/FrontendOptions.cpp
The file was modifiedflang/test/Semantics/label05.f90
The file was modifiedflang/test/Semantics/label12.f90
The file was modifiedflang/lib/FrontendTool/ExecuteCompilerInvocation.cpp
The file was modifiedflang/test/Semantics/doconcurrent04.f90
Commit 21debeae785dc4d7c9718fe5b46857a2c2ce6670 by nicolas.vasilache
[mlir][Linalg] Generalize vector::transfer hoisting on tensors.

This revision adds support for hoisting "subtensor + vector.transfer_read" / "subtensor_insert + vector.transfer_write pairs" across scf.for.
The unit of hoisting becomes a HoistableRead / HoistableWrite struct which contains a pair of "vector.transfer_read + optional subtensor" / "vector.transfer_write + optional subtensor_insert".
scf::ForOp canonicalization patterns are applied greedily on the successful application of the transformation to cleanup the IR more eagerly and potentially expose more transformation opportunities.

Differential revision:
The file was modifiedmlir/lib/Dialect/Linalg/Transforms/CodegenStrategy.cpp
The file was modifiedmlir/lib/Dialect/Linalg/Transforms/Hoisting.cpp
The file was modifiedmlir/test/Dialect/Linalg/hoisting.mlir