- Jan 29, 2021
-
-
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
-
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.
-
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.
-
Roman Lebedev authored
This makes follow-up patch for Dominator Tree preservation somewhat more straight-forward.
-
Roman Lebedev authored
This is correctly handled in new-PM wrappers, but not in old-PM.
-
Cassie Jones authored
These are widened to a wider UADDE/USUBE, with the overflow value unused, and with the same synthesis of a new overflow value as for the O operations. Reviewed By: paquette Differential Revision: https://reviews.llvm.org/D95326
-
Jessica Paquette authored
This adds a generic opcode which communicates that a type has already been zero-extended from a narrower type. This is intended to be similar to AssertZext in SelectionDAG. For example, ``` %x_was_extended:_(s64) = G_ASSERT_ZEXT %x, 16 ``` Signifies that the top 48 bits of %x are known to be 0. This is useful in cases like this: ``` define i1 @zeroext_param(i8 zeroext %x) { %cmp = icmp ult i8 %x, -20 ret i1 %cmp } ``` In AArch64, `%x` must use a 32-bit register, which is then truncated to a 8-bit value. If we know that `%x` is already zero-ed out in the relevant high bits, we can avoid the truncate. Currently, in GISel, this looks like this: ``` _zeroext_param: and w8, w0, #0xff ; We don't actually need this! cmp w8, #236 cset w0, lo ret ``` While SDAG does not produce the truncation, since it knows that it's unnecessary: ``` _zeroext_param: cmp w0, #236 cset w0, lo ret ``` This patch - Adds G_ASSERT_ZEXT - Adds MIRBuilder support for it - Adds MachineVerifier support for it - Documents it It also puts G_ASSERT_ZEXT into its own class of "hint instruction." (There should be a G_ASSERT_SEXT in the future, maybe a G_ASSERT_ALIGN as well.) This allows us to skip over hints in the legalizer etc. These can then later be selected like COPY instructions or removed. Differential Revision: https://reviews.llvm.org/D95564 -
AndreyChurbanov authored
-