- Jan 29, 2021
-
-
Kazu Hirata authored
-
Kazu Hirata authored
Various *TargetStreamer.h need formatted_raw_ostream but rely on a forward declaration of formatted_raw_ostream in MCStreamer.h. This patch adds forward declarations right in *TargetStreamer.h. While we are at it, this patch removes the one in MCStreamer.h, where it is unnecessary.
-
Björn Schäpers authored
Differential Revision: https://reviews.llvm.org/D92257
-
Wei Mi authored
iterating the same PHI/LABEL/Debug instructions repeatedly. We run into a compiling timeout problem when building a target after its SampleFDO profile is updated. It is because some very large blocks with a bunch of PHIs at the beginning. LiveDebugVariables::emitDebugValues called during VirtRegRewriter phase searchs the insertion point for those large BBs repeatedly in SkipPHIsLabelsAndDebug, and each time SkipPHIsLabelsAndDebug needs to go through the same set of PHIs before it can find the first non PHI/Label/Debug instruction. This patch adds a cache to save the last position for the sequence which has been checked in the previous call of SkipPHIsLabelsAndDebug. Differential Revision: https://reviews.llvm.org/D94981
-
Max Kazantsev authored
We use `EquivalenceClasses` to cache the notion that two SCEVs are equivalent, so save time in situation when `A` is equivalent to `B` and `B` is equivalent to `C`, making check "if `A` is equivalent to `C`?" cheaper. We also return `0` in the comparator when we reach max analysis depth to save compile time. After doing this, we also cache them as being equivalent. Now, imagine the following situation: - `A` is proved equivalent to `B`; - `C` is proved equivalent to `D`; - Comparison of `A` against `D` is proved non-zero; - Comparison of `B` against `C` reaches max depth (and gets cached as equivalence). Now, before the invocation of compare(`B`, `C`), `A` and `D` belonged to different equivalence classes, and their comparison returned non-zero. After the the invocation of compare(`B`, `C`), equivalence classes get merged and `A`, `B`, `C` and `D` all fall into the same equivalence class. So the comparator will change its behavior for couple `A` and `D`, with weird consequences following it. This comparator is finally used in `std::stable_sort`, and this behavior change makes it crash (looks like it's causing a memory corruption). Solution: this patch changes `CompareSCEVComplexity` to return `None` when the max depth is reached. So in this case, we do not cache these SCEVs (and their parents in the tree) as being equivalent. Differential Revision: https://reviews.llvm.org/D94654 Reviewed By: lebedev.ri
-
Christudasan Devadasan authored
This patch allows targets to define multiple cost values for each register so that the cost model can be more flexible and better used during the register allocation as per the target requirements. For AMDGPU the VGPR allocation will be more efficient if the register cost can be associated dynamically based on the calling convention. Reviewed By: qcolombet Differential Revision: https://reviews.llvm.org/D86836
-
Jonas Devlieghere authored
Explicitly compare to None when checking the triple's components so we don't bail out when one of them is the empty string.
-
Yang Fan authored
GCC warning: ``` /llvm-project/llvm/lib/DebugInfo/DWARF/DWARFDebugFrame.cpp: In member function ‘llvm::Expected<long unsigned int> llvm::dwarf::CFIProgram::Instruction::getOperandAsUnsigned(const llvm::dwarf::CFIProgram&, uint32_t) const’: /llvm-project/llvm/lib/DebugInfo/DWARF/DWARFDebugFrame.cpp:425:1: warning: control reaches end of non-void function [-Wreturn-type] 425 | } | ^ /llvm-project/llvm/lib/DebugInfo/DWARF/DWARFDebugFrame.cpp: In member function ‘llvm::Expected<long int> llvm::dwarf::CFIProgram::Instruction::getOperandAsSigned(const llvm::dwarf::CFIProgram&, uint32_t) const’: /llvm-project/llvm/lib/DebugInfo/DWARF/DWARFDebugFrame.cpp:477:1: warning: control reaches end of non-void function [-Wreturn-type] 477 | } | ^ ```
-
Yang Fan authored
-
Amy Huang authored
with fix to test case and stringrefs. Currently (for codeview) lambdas have a string like `<lambda_0>` in their mangled name, and don't have any display name. This change uses the `<lambda_0>` as the display name, which helps distinguish between lambdas in -gline-tables-only, since there are no linkage names there. It also changes how we display lambda names; previously we used `<unnamed-tag>`; now it will show `<lambda_0>`. I added a function to the mangling context code to create this string; for Itanium it just returns an empty string. Bug: https://bugs.llvm.org/show_bug.cgi?id=48432 Reviewed By: rnk Differential Revision: https://reviews.llvm.org/D95187 This reverts 9b21d4b9
-
Casey Carter authored
...and rename from `version.pass.cpp` to `version.compile.pass.cpp` to follow the new convention.
-
Michael Jones authored
Reviewed By: sivachandra Differential Revision: https://reviews.llvm.org/D95646
-
Casey Carter authored
... so that comparisons with an `int` LHS and `MoveOnly` RHS are valid, as is necessary for the `partial_sort_copy` test to pass with an implementation that doesn't force a conversion to the type of the RHS as libc++ does.
-
Carl Ritson authored
SCC was not correctly preserved when entering WWM. Current lit test was unable to detect this as entry block is handled differently. Additionally fix an issue where SCC was unnecessarily preserved when exiting from WWM to Exact mode. Reviewed By: foad Differential Revision: https://reviews.llvm.org/D95500
-
Jessica Paquette authored
This adds generic regbankselect support for G_ASSERT_ZEXT. It inherits whatever register bank the source was given, always, on all targets. I think that at the point where we run into these, the source register bank should be decided. This also adds some AArch64-specific code which makes sure we can handle G_ASSERT_ZEXT when deciding on register banks for G_STORE, G_PHI, ... etc. Differential Revision: https://reviews.llvm.org/D95649
-
Stephen Kelly authored
Differential Revision: https://reviews.llvm.org/D95644
-
Carl Ritson authored
V_SET_INACTIVE is implemented with S_NOT which clobbers SCC. Mark sure it is marked appropriately. Reviewed By: piotr Differential Revision: https://reviews.llvm.org/D95509
-
Amara Emerson authored
Differential Revision: https://reviews.llvm.org/D95647
-
Jessica Paquette authored
It's the same as the ZEXT/TRUNC case, except SrcBitWidth is given by the immediate operand. Update KnownBitsTest.cpp and a MIR test for a concrete example. Differential Revision: https://reviews.llvm.org/D95566
-
Amy Huang authored
Currently (for codeview) lambdas have a string like `<lambda_0>` in their mangled name, and don't have any display name. This change uses the `<lambda_0>` as the display name, which helps distinguish between lambdas in -gline-tables-only, since there are no linkage names there. It also changes how we display lambda names; previously we used `<unnamed-tag>`; now it will show `<lambda_0>`. I added a function to the mangling context code to create this string; for Itanium it just returns an empty string. Bug: https://bugs.llvm.org/show_bug.cgi?id=48432 Reviewed By: rnk Differential Revision: https://reviews.llvm.org/D95187
-
Amara Emerson authored
We try to do this optimization if we can determine that testing for the truncated bits with an eq/ne predicate results in the same thing as testing the lower bits. Differential Revision: https://reviews.llvm.org/D95645
-
Mehdi Amini authored
This class is looking up a dialect prefix on the identifier on initialization and keeping a pointer to the Dialect when found. The NamedAttribute key is now a DialectIdentifier. Reviewed By: rriddle, jpienaar Differential Revision: https://reviews.llvm.org/D95418
-
Alexander Kornienko authored
Applied fixes enabled by the LLVM's .clang-tidy configs. Reverted files where fixes introduced compile errors: clang-tools-extra/clang-tidy/hicpp/NoAssemblerCheck.cpp clang-tools-extra/clang-tidy/misc/ThrowByValueCatchByReferenceCheck.cpp $ clang-tools-extra/clang-tidy/tool/run-clang-tidy.py -fix clang-tools-extra/clang-tidy/ Enabled checks: llvm-else-after-return llvm-header-guard llvm-include-order llvm-namespace-comment llvm-prefer-isa-or-dyn-cast-in-conditionals llvm-prefer-register-over-unsigned llvm-qualified-auto llvm-twine-local misc-definitions-in-headers misc-misplaced-const misc-new-delete-overloads misc-no-recursion misc-non-copyable-objects misc-redundant-expression misc-static-assert misc-throw-by-value-catch-by-reference misc-unconventional-assign-operator misc-uniqueptr-reset-release misc-unused-alias-decls misc-unused-using-decls readability-identifier-naming Reviewed By: aaron.ballman Differential Revision: https://reviews.llvm.org/D95614
-
Greg Clayton authored
-
Richard Smith authored
No internal functionality change intended, but this fixes out-of-tree uses.
-
Duncan P. N. Exon Smith authored
-
Duncan P. N. Exon Smith authored
Add an `enable_if` to the generic `IntrusiveRefCntPtr` constructors so that std::is_convertible gives an honest answer when the underlying pointers cannot be converted. Added `static_assert`s to the test suite to verify. Also combine generic constructors from `IntrusiveRefCntPtr<X>&&` and `const IntrusiveRefCntPtr<X>&`. At first glance this appears to be an infinite loop, but the real copy/move constructors are spelled out separately above. Added a unit test to verify. Differential Revision: https://reviews.llvm.org/D95498
-
- Jan 28, 2021
-
-
Dimitry Andric authored
This commit accidentally enabled fgetgrent_r() in the msan tests under FreeBSD, but this function is not supported. Also remove FreeBSD from the SANITIZER_INTERCEPT_FGETGRENT_R macro.
-
Jessica Paquette authored
Recommit of 4580acf6 `Opc = DefMI->getOpcode()` was in the wrong place.
-
Jessica Paquette authored
This reverts commit 4580acf6. Reverting while looking into some test failures.
-
Jessica Paquette authored
Treat hint instructions like G_ASSERT_ZEXT like COPY instructions in helpers which walk through copies. This ensures that instructions like G_ASSERT_ZEXT won't impact any optimizations that rely on these helpers. Differential Revision: https://reviews.llvm.org/D95577
-
Tony Tye authored
Add LLVM to the DW_CFA_LLVM_def_aspace_cfa and DW_CFA_LLVM_def_aspace_cfa_sf DWARF extensions. Reviewed By: scott.linder Differential Revision: https://reviews.llvm.org/D95640
-
MaheshRavishankar authored
Differential Revision: https://reviews.llvm.org/D94531
-
Roman Lebedev authored
This de-pessimizes the arguably more usual case of no masked mem intrinsics, and gets rid of one more Dominator Tree recalculation. As per llvm/test/CodeGen/X86/opt-pipeline.ll, there's one more Dominator Tree recalculation left, we could get rid of.
-
Roman Lebedev authored
This doesn't get rid of any Dominator Tree recalculations just yet, there is one more pass to update..
-
Roman Lebedev authored
Makes Dominator Tree preservation in a followup patch somewhat easier.
-
Roman Lebedev authored
Makes Dominator Tree preservation in a followup patch somewhat easier.
-
Roman Lebedev authored
Makes Dominator Tree preservation in a followup patch somewhat easier.
-