- Jul 21, 2022
-
-
Joseph Huber authored
We previously had some logic that stopped us from building the device runtime if there were no NVPTX architectures provided. This is incorrect because we could have AMDGPU libraries. Even if the lists are empty we should be able to attempt to build these and get dummy output. THis wilil make it much easier for our tooling which expects certain libraries. If the user wishes to disable the library entirely they should use `-DLIBOMPTARGET_BUILD_DEVICERTL_BCLIB=OFF" Reviewed By: tianshilei1992 Differential Revision: https://reviews.llvm.org/D130266
-
Phoebe Wang authored
-
Pavel Labath authored
The test was assuming that the output will come in two messages. The truth is that it will come in **at least** two messages.
-
Alex Zinenko authored
The type extraction helper function for block argument and op result list objects was ignoring the slice entirely. So was the slice addition. Both are caused by a misleading naming convention to implement slices via CRTP. Make the convention more explicit and hide the helper functions so users have harder time calling them directly. Closes #56540. Reviewed By: stellaraccident Differential Revision: https://reviews.llvm.org/D130271
-
David Sherwood authored
This patch is in preparation for enabling vectorisation with tail-folding by default for SVE targets. Once we do that many existing tests will break that depend upon having normal unpredicated vector loops. For all such tests I have added the flag: -prefer-predicate-over-epilogue=scalar-epilogue Differential Revision: https://reviews.llvm.org/D129137
-
Graham Hunter authored
Adds new tests for add and sub instructions before reaching a select. Also adds tests using different bit widths for memory, including non-power-of-two integers.
-
Nicolas Vasilache authored
This operation is a NavigationOp that simplifies the writing of transform IR. Since there is no way of refering to an interface by name, the current implementation uses an EnumAttr and depends on the interfaces it supports. In the future, it would be worthwhile to remove this dependence and generalize. Differential Revision: https://reviews.llvm.org/D130267
-
Ivan Kosarev authored
Reviewed By: dp Differential Revision: https://reviews.llvm.org/D130009
-
Ivan Kosarev authored
Reviewed By: arsenm Differential Revision: https://reviews.llvm.org/D130001
-
Jez Ng authored
If there are multiple symbols at the same address, our unwind info implementation assumes that we always register unwind entries to a single canonical symbol. This assumption was violated by the `registerEhFrame` code. Fixes #56570. Reviewed By: #lld-macho, thakis Differential Revision: https://reviews.llvm.org/D130208
-
Erich Keane authored
Looks like we again are going to have problems with libcxx tests that are overly specific in their dependency on clang's diagnostics. This reverts commit 6542cb55.
-
Daniel Bertalan authored
It's only used in one branch, so we were unnecessarily calculating the length of many symbol names. Tiny speedup when linking chromium_framework on my M1 Mac mini: x before.txt + after.txt N Min Max Median Avg Stddev x 10 3.9917109 4.0418 4.0318099 4.0203902 0.021459873 + 10 3.944725 4.053988 3.9708955 3.9825602 0.037257609 Difference at 95.0% confidence -0.03783 +/- 0.0285663 -0.940953% +/- 0.710536% (Student's t, pooled s = 0.0304028) Differential Revision: https://reviews.llvm.org/D130234 -
Muhammad Usman Shahid authored
This patch is basically the rewording of the static assert statement's output(error) on screen after failing. Failing a _Static_assert in C should not report that static_assert failed. It’d probably be better to reword the diagnostic to be more like GCC and say “static assertion” failed in both C and C++. consider a c file having code _Static_assert(0, "oh no!"); In clang the output is like: <source>:1:1: error: static_assert failed: oh no! _Static_assert(0, "oh no!"); ^ ~ 1 error generated. Compiler returned: 1 Thus here the "static_assert" is not much good, it will be better to reword it to the "static assertion failed" to more generic. as the gcc prints as: <source>:1:1: error: static assertion failed: "oh no!" 1 | _Static_assert(0, "oh no!"); | ^~~~~~~~~~~~~~ Compiler returned: 1 The above can also be seen here. This patch is about rewording the static_assert to static assertion. Differential Revision: https://reviews.llvm.org/D129048 -
Joseph Huber authored
Summary: We previously used `alignof` to get the necessary alignment of the binary header. However this was different on 32-bit platforms and caused a few tests to fail because of it. This patch just changes this to be a hard-coded constant of 8.
-
Jay Foad authored
Edit the IR input for some codegen tests to simulate what the IR code sinking pass would do to it. This makes the tests immune to the presence or absence of the code sinking pass in the codegen pass pipeline, which does not belong there. Differential Revision: https://reviews.llvm.org/D130169
-
Michael Buch authored
`IntegerLiteral::Create` operates on integer types. For that reason when we parse DWARF into an AST, when we encounter a constant initialized enum member variable, we try to determine the underlying integer type before creating the `IntegerLiteral`. However, we currently don't desugar the type and for enum typedefs `dyn_cast<EnumType>` fails. In debug builds this triggers following assert: ``` Assertion failed: (type->isIntegerType() && "Illegal type in IntegerLiteral"), function IntegerLiteral, file Expr.cpp, line 892 ``` This patch turns the `dyn_cast<EnumType>` into a `getAs<EnumType>` which `dyn_cast`s the canonical type, allowing us to get to the underlying integer type. **Testing** * API test * Manual repro is fixed Differential Revision: https://reviews.llvm.org/D130213
-
Michael Buch authored
This patch adds support for formatting `std::map::const_iterator`. It's just a matter of adding `const_` to the existing regex. **Testing** * Added test case to existing API tests Differential Revision: https://reviews.llvm.org/D129962
-
Matt Arsenault authored
It only applies to gfx1100 and gfx1102, and for wave32.
-
Nikita Popov authored
Replace the value-accepting isReallocLikeFn() overload with a getReallocatedOperand() function, which returns which operand is the one being reallocated. Currently, this is always the first one, but once allockind(realloc) is respected, the reallocated operand will be determined by the allocptr parameter attribute.
-
Nikita Popov authored
Remove isFreeCall() in favor of getFreedOperand(). Replace the two remaining uses with a getFreedOperand() != nullptr check, as they only care that something is getting freed. (The usage in DSE is correct as such. The allocator-related checks in CFLGraph look rather questionable in general.)
-
Nikita Popov authored
Use getFreedOperand() instead of isFreeCall() to remove the implicit assumption that any pointer operand to a free function is the operand being freed. This won't actually matter until we handle allockind(free).
-
Nikita Popov authored
Track which operand is actually freed, to avoid the implicit assumption that it is the first call argument.
-
Thomas Symalla authored
This patch merges a consecutive sequence of s_or_saveexec s_o, s_i s_xor exec, exec, s_o into a single s_andn2_saveexec s_o, s_i instruction. This patch also cleans up the SIOptimizeExecMasking pass a bit. Reviewed By: nhaehnle Differential Revision: https://reviews.llvm.org/D129073
-
Haojian Wu authored
The `Begin` is not the index of the left bracket, `Begin-1` is, otherwise the assertion will be triggered on case `Foo().call();`.
-
Andrzej Warzynski authored
This reverts commit 396e944d. Failing bot: https://lab.llvm.org/buildbot/#/builders/89/builds/30096
-
Dylan Fleming authored
This patch aims to create a webpage to document Flang's command line options on https://flang.llvm.org/docs/ in a similar way to Clang's https://clang.llvm.org/docs/ClangCommandLineReference.html This is done by using clang_tablegen to generate an .rst file from Options.td (which is current shared with Clang) For this to work, ClangOptionDocEmitter.cpp was updated to allow specific Flang flags to be included, rather than bulk excluding clang flags. Reviewed By: awarzynski Differential Revision: https://reviews.llvm.org/D129864
-
Alexey Lapshin authored
DWARF files may contain overlapping address ranges. f.e. it can happen if the two copies of the function have identical instruction sequences and they end up sharing. That looks incorrect from the point of view of DWARF spec. Current implementation of DWARFLinker does not combine overlapped address ranges. It would be good if such ranges would be handled in some useful way. Thus, this patch allows DWARFLinker to combine overlapped ranges in a single one. Depends on D86539 Reviewed By: aprantl Differential Revision: https://reviews.llvm.org/D123469
-
Matt Devereau authored
This patch lowers duplane128(insert_subvector(undef, bitcast(op(128bitsubvec)), 0), 0) to bitcast(duplane128(insert_subvector(undef, op(128bitsubvec), 0), 0)). This enables floating-point loads to match patterns added in https://reviews.llvm.org/D130010 Differential Revision: https://reviews.llvm.org/D130013
-
Matt Devereau authored
Following on from https://reviews.llvm.org/D128902, lower DUPLANE128 to LD1RQD for integer load types from instruction selection. Differential Revision: https://reviews.llvm.org/D130010
-
Simon Pilgrim authored
AArch64 has custom i128 ctpop handling, so match this in the parity tests Added as part of triaging Issue #56531
-
Jay Foad authored
Differential Revision: https://reviews.llvm.org/D130243
-
Alexey Lapshin authored
This reverts commit d2a4d6bf.
-
Nikita Popov authored
We currently assume in a number of places that free-like functions free their first argument. This is true for all hardcoded free-like functions, but with the new attribute-based design, the freed argument is supposed to be indicated by the allocptr attribute. To make sure we handle this correctly once allockind(free) is respected, add a getFreedOperand() helper which returns the freed argument, rather than just indicating whether the call frees *some* argument. This migrates most but not all users of isFreeCall() to the new API. The remaining users are a bit more tricky.
-
Alexey Lapshin authored
DWARF files may contain overlapping address ranges. f.e. it can happen if the two copies of the function have identical instruction sequences and they end up sharing. That looks incorrect from the point of view of DWARF spec. Current implementation of DWARFLinker does not combine overlapped address ranges. It would be good if such ranges would be handled in some useful way. Thus, this patch allows DWARFLinker to combine overlapped ranges in a single one. Depends on D86539 Reviewed By: aprantl Differential Revision: https://reviews.llvm.org/D123469
-
Dmitry Vyukov authored
Reviewed By: melver Differential Revision: https://reviews.llvm.org/D130236
-
Nikita Popov authored
Reapply the patch with getObjectSize() replaced by getAllocSize(). The former will also look through calls that return their argument, and we'll end up placing dereferenceable attributes on intrinsics like llvm.launder.invariant.group. While this isn't wrong, it also doesn't seem to be particularly useful. For now, use getAllocSize() instead, which sticks closer to the original behavior of this code. ----- This code is just interested in the allocsize, not any other allocator properties.
-
Nikita Popov authored
Default getAllocSize() to use the trivial mapper. Also switch from using std::function to function_ref. Furthermore, update the doc comment to point out a subtle difference between getAllocSize() and getObjectSize(): The latter may also return something for calls that return their argument (via "returned" attribute or special intrinsics like invariant groups).
-
jacquesguan authored
With fix for AArch64 and Hexgon test cases.
-
Nikita Popov authored
Fetching allocation data for calls is a rather hot operation, and TLI lookups are slow. We can greatly reduce the number of calls for which TLI is queried by checking that they return a pointer value first, as this is a requirement for allocation functions anyway.
-
Chuanqi Xu authored
Currently, clang may meet an infinite loop in a very tricky case when it iterates the default args. This patch tries to fix this by adding a `fixed` check.
-