FailedChanges

Summary

  1. Fix for AMDGPU MUL_I24 known bits calculation (details)
  2. [BasicBlockUtils] Add utility to remove redundant dbg.value instrs (details)
  3. [LoopRotate] Add test case to show dbg value problem (details)
  4. [BasicBlockUtils] Fix dbg.value elimination problem in (details)
  5. Fix whitespace. (details)
  6. [lldb] Centralize desugaring of decltype-like types in ClangASTContext (details)
  7. [lldb][NFC] Remove all overloads of Copy/DeportType in ClangASTImporter (details)
  8. Add initial tests for update_{llc_,cc_,}test_checks.py (details)
  9. [lldb] Add unit test for ClangASTImporter (details)
  10. [Aarch64][SVE] Add intrinsics for scatter stores (details)
Commit 4f17b1784e94609a2139e0520593884e23345f7e by jay.foad
Fix for AMDGPU MUL_I24 known bits calculation
Summary: At present, the code calculating known bits of AMDGPU MUL_I24
confuses the concepts of "non-negative number" and "positive number".
In some situations, it results in incorrect code. I have a case where
the optimizer replaces the result of calculating MUL_I24(-5, 0) with -8.
Reviewers: foad, arsenm
Reviewed By: arsenm
Subscribers: foad, arsenm, kzhuravl, jvesely, wdng, nhaehnle, yaxunl,
dstuttard, tpr, t-tye, hiraditya, llvm-commits
Tags: #llvm
Patch by Eugene Kuznetsov.
Differential Revision: https://reviews.llvm.org/D70367
The file was addedllvm/test/CodeGen/AMDGPU/amdgpu-mul24-knownbits.ll
The file was modifiedllvm/include/llvm/Support/KnownBits.h
The file was modifiedllvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp
Commit 1c49553c19a7044fbbf4528b732926f19f210e54 by bjorn.a.pettersson
[BasicBlockUtils] Add utility to remove redundant dbg.value instrs
Summary: Add a RemoveRedundantDbgInstrs to BasicBlockUtils with the goal
to remove redundant dbg intrinsics from a basic block.
This can be useful after various transforms, as it might be simpler to
do a filtering of dbg intrinsics after the transform than during the
transform. One primary use case would be to replace a too aggressive
removal done by MergeBlockIntoPredecessor, seen at loop rotate (not done
in this patch).
The elimination algorithm currently focuses on dbg.value intrinsics and
is doing two iterations over the BB.
First we iterate backward starting at the last instruction in the BB.
Whenever a consecutive sequence of dbg.value instructions are found we
keep the last dbg.value for each variable found (variable fragments are
identified using the  {DILocalVariable, FragmentInfo, inlinedAt} triple
as given by the DebugVariable helper class).
Next we iterate forward starting at the first instruction in the BB.
Whenever we find a dbg.value describing a DebugVariable (identified by
{DILocalVariable, inlinedAt}) we save the {DIValue, DIExpression} that
describes that variables value. But if the variable already was mapped
to the same {DIValue, DIExpression} pair we instead drop the second
dbg.value.
To ease the process of making lit tests for this utility a new pass is
introduced called RedundantDbgInstElimination. It can be executed by opt
using -redundant-dbg-inst-elim.
Reviewers: aprantl, jmorse, vsk
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D71478
The file was modifiedllvm/lib/Transforms/Scalar/Scalar.cpp
The file was addedllvm/test/Transforms/DCE/dbg-value-removal.ll
The file was modifiedllvm/lib/Transforms/Utils/BasicBlockUtils.cpp
The file was modifiedllvm/include/llvm/LinkAllPasses.h
The file was modifiedllvm/include/llvm/Transforms/Utils/BasicBlockUtils.h
The file was modifiedllvm/include/llvm/InitializePasses.h
The file was modifiedllvm/include/llvm/Transforms/Scalar.h
The file was modifiedllvm/lib/Transforms/Scalar/DCE.cpp
Commit 632deb6bd04022945468faef2dcaa8c9fdf1b0fd by bjorn.a.pettersson
[LoopRotate] Add test case to show dbg value problem
Summary: In commit d60f34c20a2f31335c8d5626e (llvm-svn 317128, PR35113)
MergeBlockIntoPredecessor was changed into discarding some dbg.value
intrinsics referring to PHI values, post-splice due to loop rotation.
That elimination of dbg.value intrinsics does not consider which
dbg.value to keep based on the context. Such as always keeping the one
that comes first textually, or the need to keep several of them in case
the variable is changing it's value several times inside the basic
block.
In the past that hasn't been such a big problem since
CodeGenPrepare::placeDbgValues has moved the dbg.value to be next to the
PHI node anyway. But after commit 00e238896cd8ad3a7d7 CodeGenPrepare
isn't doing that any longer, so we need to be more careful when avoiding
duplicate dbg.value intrinsics in MergeBlockIntoPredecessor.
This patch is just a pre commit of the test case.
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D71479
The file was addedllvm/test/Transforms/LoopRotate/dbg-value-duplicates-2.ll
Commit e5f07080b8ac73dd573e81a186925a122ab8a39d by bjorn.a.pettersson
[BasicBlockUtils] Fix dbg.value elimination problem in
MergeBlockIntoPredecessor
Summary: In commit d60f34c20a2f31335c8d5626e (llvm-svn 317128, PR35113)
MergeBlockIntoPredecessor was changed into discarding some dbg.value
intrinsics referring to PHI values, post-splice due to loop rotation.
That elimination of dbg.value intrinsics did not consider which
dbg.value to keep depending on the context (e.g. if the variable is
changing its value several times inside the basic block).
In the past that hasn't been such a big problem since
CodeGenPrepare::placeDbgValues has moved the dbg.value to be next to the
PHI node anyway. But after commit 00e238896cd8ad3a7d7 CodeGenPrepare
isn't doing that any longer, so we need to be more careful when avoiding
duplicate dbg.value intrinsics in MergeBlockIntoPredecessor.
This patch replaces the code that tried to avoid duplicate dbg.values by
using the RemoveRedundantDbgInstrs helper.
Reviewers: aprantl, jmorse, vsk
Reviewed By: aprantl, vsk
Subscribers: jholewinski, hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D71480
The file was modifiedllvm/test/Transforms/SimplifyCFG/hoist-dbgvalue-inlined.ll
The file was modifiedllvm/test/DebugInfo/NVPTX/debug-loc-offset.ll
The file was modifiedllvm/test/Transforms/LoopRotate/dbg-value-duplicates-2.ll
The file was modifiedllvm/lib/Transforms/Utils/BasicBlockUtils.cpp
Commit f8495017f0292df05f23878ea593f68d2d2c75f4 by jay.foad
Fix whitespace.
The file was modifiedllvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp
Commit ea2805a04b65331ca568ff76761ef8a52337e42b by pavel
[lldb] Centralize desugaring of decltype-like types in ClangASTContext
Summary: These types were handled in some places, but not others. This
resulted in (for example) not being able to display members of structs
whose types were defined using these constructs.
Using getLocallyUnqualifiedSingleStepDesugaredType for these types is
not fully equivalent, as it will only desugar them if the types are not
instantiation-dependent, whereas previously we did that unconditionally.
It's not clear to me which behavior is correct here, but the test suite
does not seem to care either way.
Reviewers: teemperor, shafik
Subscribers: lldb-commits
Tags: #lldb
Differential Revision: https://reviews.llvm.org/D71405
The file was modifiedlldb/source/Symbol/ClangASTContext.cpp
The file was modifiedlldb/unittests/Symbol/TestClangASTContext.cpp
Commit 75e8a91cf84fce2432f70949ab9e353ff2322a5f by Raphael Isemann
[lldb][NFC] Remove all overloads of Copy/DeportType in ClangASTImporter
The overloads that don't take a CompilerType serve no purpose as we
always have a CompilerType in the scope where we call them. Instead just
call the overload that takes a CompilerType and delete the now unused
other overloaded methods.
The file was modifiedlldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp
The file was modifiedlldb/source/Symbol/ClangASTImporter.cpp
The file was modifiedlldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp
The file was modifiedlldb/include/lldb/Symbol/ClangASTImporter.h
Commit 240aff80e0e59b79779d046b3275904fc0750d59 by Alexander.Richardson
Add initial tests for update_{llc_,cc_,}test_checks.py
Summary: This commit adds basic tests for these update script to
validate that they still work as expected. In the future we could extend
these tests whenever new features are added to avoid introducing
regressions.
Reviewers: xbolva00, MaskRay, jdoerfert
Reviewed By: jdoerfert
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D70660
The file was addedllvm/test/tools/UpdateTestChecks/update_llc_test_checks/lit.local.cfg
The file was addedllvm/test/tools/UpdateTestChecks/update_cc_test_checks/lit.local.cfg
The file was addedllvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/basic.ll
The file was addedllvm/test/tools/UpdateTestChecks/lit.local.cfg
The file was addedllvm/test/tools/UpdateTestChecks/update_llc_test_checks/Inputs/basic.ll.expected
The file was addedllvm/test/tools/UpdateTestChecks/update_cc_test_checks/Inputs/mangled_names.c.funcsig.expected
The file was addedllvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/basic.ll.expected
The file was addedllvm/test/tools/UpdateTestChecks/update_cc_test_checks/mangled_names.test
The file was addedllvm/test/tools/UpdateTestChecks/update_test_checks/lit.local.cfg
The file was addedllvm/test/tools/UpdateTestChecks/update_llc_test_checks/Inputs/basic.ll
The file was addedllvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/basic.ll.funcsig.expected
The file was addedllvm/test/tools/UpdateTestChecks/update_test_checks/basic.test
The file was addedllvm/test/tools/UpdateTestChecks/update_cc_test_checks/Inputs/mangled_names.c
The file was addedllvm/test/tools/UpdateTestChecks/update_cc_test_checks/Inputs/mangled_names.c.expected
The file was addedllvm/test/tools/UpdateTestChecks/update_llc_test_checks/basic.test
Commit 22caa3cfbcf5762a47acc40c425d9fe0c40da621 by Raphael Isemann
[lldb] Add unit test for ClangASTImporter
The file was addedlldb/unittests/Symbol/TestClangASTImporter.cpp
The file was modifiedlldb/unittests/Symbol/CMakeLists.txt
Commit 7e20c3a71d5fc3763f6d0b85312c866837a92a06 by andrzej.warzynski
[Aarch64][SVE] Add intrinsics for scatter stores
Summary: This patch adds the following SVE intrinsics for scatter
stores:
* 64-bit offsets:
* @llvm.aarch64.sve.st1.scatter (unscaled)
* @llvm.aarch64.sve.st1.scatter.index (scaled)
* 32-bit unscaled offsets:
* @llvm.aarch64.sve.st1.scatter.uxtw (zero-extended offset)
* @llvm.aarch64.sve.st1.scatter.sxtw (sign-extended-offset)
* 32-bit scaled offsets:
* @llvm.aarch64.sve.st1.scatter.uxtw.index (zero-extended offset)
* @llvm.aarch64.sve.st1.scatter.sxtw.index (sign-extended offset)
* vector base + immediate:
* @llvm.aarch64.sve.st1.scatter.imm
Reviewers: rengolin, efriedma, sdesmalen
Reviewed By: efriedma, sdesmalen
Subscribers: kmclaughlin, eli.friedman, tschuett, kristof.beyls,
hiraditya, rkruppe, psnobl, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D71074
The file was modifiedllvm/lib/Target/AArch64/AArch64InstrFormats.td
The file was modifiedllvm/lib/Target/AArch64/AArch64ISelLowering.h
The file was addedllvm/test/CodeGen/AArch64/sve-intrinsics-scatter-stores-vector-base.ll
The file was modifiedllvm/lib/Target/AArch64/SVEInstrFormats.td
The file was modifiedllvm/lib/Target/AArch64/AArch64ISelLowering.cpp
The file was addedllvm/test/CodeGen/AArch64/sve-intrinsics-scatter-stores-32bit-scaled-offsets.ll
The file was modifiedllvm/include/llvm/IR/IntrinsicsAArch64.td
The file was modifiedllvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
The file was addedllvm/test/CodeGen/AArch64/sve-intrinsics-scatter-stores-32bit-unscaled-offsets.ll
The file was addedllvm/test/CodeGen/AArch64/sve-intrinsics-scatter-stores-64bit-scaled-offset.ll
The file was addedllvm/test/CodeGen/AArch64/sve-intrinsics-scatter-stores-64bit-unscaled-offset.ll