- Jan 23, 2020
-
-
Daniil Suchkov authored
Apparently cache of AliasSetTrackers held by LICM was the only user of SimpleAnalysis infrastructure. Now, given that we no longer have that cache, this infrastructure is obsolete and, taking into account its nature, we don't want any new solutions to be based on it. Reviewers: asbirlea, fhahn, efriedma, reames Reviewed-By: asbirlea Differential Revision: https://reviews.llvm.org/D73085
-
Igor Kudrin authored
Unfortunately, not all compilers allow using llvm_unreachable in a constexpr function.
-
LLVM GN Syncbot authored
-
Igor Kudrin authored
The patch tries to cover most remaining cases of wrong data. Differential Revision: https://reviews.llvm.org/D71932
-
Igor Kudrin authored
This allows parsing Address Range Tables in the 64-bit DWARF format. Differential Revision: https://reviews.llvm.org/D71876
-
Igor Kudrin authored
This will help simplify code in upcoming patches and make some expressions constexpr. Differential Revision: https://reviews.llvm.org/D73039
-
Igor Kudrin authored
This will help make some expressions in upcoming patches constexpr. Differential Revision: https://reviews.llvm.org/D73036
-
Igor Kudrin authored
This helps to detect and report parsing errors better. The patch follows the ideas of LLDB's patches D59370 and D59381. It adds tests for valid and some invalid cases. More checks and tests to come. Note that the patch fixes validation of the Length field because the value does not include the field itself. The existing users are updated to show the error messages. Differential Revision: https://reviews.llvm.org/D71875
-
Igor Kudrin authored
Empty address range tables are allowed by the DWARF standard; Moreover, generating them is recommended as a best practice, see http://wiki.dwarfstd.org/index.php?title=Best_Practices#Generating_.debug_aranges_data Differential Revision: https://reviews.llvm.org/D71931
-
Daniil Suchkov authored
Since LICM doesn't use AST caching any more (see D73081), this infrastructure is now obsolete and we can remove it. Reviewers: asbirlea, fhahn, efriedma, reames Reviewed-By: asbirlea Differential Revision: https://reviews.llvm.org/D73084
-
Billy Robert O'Neal III authored
-
Matt Arsenault authored
This inexplicably managed to pass locally without the updated wave64 checks.
-
Matt Arsenault authored
These ended up with higher priority than or3 patterns in a future patch. This also fixes the using VOP2 forms.
-
Florian Hahn authored
Currently due to the edge caching, we create wrong predicates for branches with matching true and false successors. We will cache the condition for the edge from the true successor, and then lookup the same edge (src and dst are the same) for the edge to the false successor. If both successors match, the condition should always be true. At the moment, we cannot really create constant VPValues, but we can just create a true condition as X | !X. Later passes will clean that up. Fixes PR44488. Reviewers: rengolin, hsaito, fhahn, Ayal, dorit, gilr Reviewed By: Ayal Differential Revision: https://reviews.llvm.org/D73079
-
James Clarke authored
-
Jonas Devlieghere authored
-
James Clarke authored
Summary: Previously, we would erroneously turn %pcrel_lo(label), where label has a %pcrel_hi against a weak symbol, into %pcrel_lo(label + offset), as evaluatePCRelLo would believe the target independent logic was going to fold it. Moreover, even if that were fixed, shouldForceRelocation lacks an MCAsmLayout and thus cannot evaluate the %pcrel_hi fixup to a value and check the symbol, so we would then erroneously constant-fold the %pcrel_lo whilst leaving the %pcrel_hi intact. After D72197, this same sequence also occurs for symbols with global binding, which is triggered in real-world code. Instead, as discussed in D71978, we introduce a new FKF_IsTarget flag to avoid these kinds of issues. All the resolution logic happens in one place, with no coordination required between RISCAsmBackend and RISCVMCExpr to ensure they implement the same logic twice. Although the implementation of %pcrel_hi can be left as target independent, we make it target dependent to ensure that they are handled identically to %pcrel_lo, otherwise we risk one of them being constant folded but the other being preserved. This also allows us to properly support fixup pairs where the instructions are in different fragments. Reviewers: asb, lenary, efriedma Reviewed By: efriedma Subscribers: arichardson, hiraditya, rbar, johnrusso, simoncook, sabuasal, niosHD, kito-cheng, shiva0217, MaskRay, zzheng, edward-jones, rogfer01, MartinMosbeck, brucehoult, the_o, rkruppe, PkmX, jocewei, psnobl, benna, Jim, s.egerton, pzheng, sameer.abuasal, apazos, luismarques, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D73211
-
Jonas Devlieghere authored
Document the different ways we test the reproducers. This is mostly to describe the new check-lldb-repro target.
-
Jonas Devlieghere authored
The new test suite should be called check-lldb-repro rather than check-lldb.
-
Jonas Devlieghere authored
This adds a new target check-lldb-repro which runs the shell tests with the lldb-repo utility. It runs the shell tests twice, once while capturing a reproducer and then again by replaying that reproducer.
-
Joerg Sonnenberger authored
-
Jonas Devlieghere authored
These test are checking for diagnostics printed by the driver. During replay we only replay the SB API calls made by the driver, so it's expected that these messages aren't displayed.
-
Florian Hahn authored
This patch adds a custom implementation of isLegalNTStore to AArch64TTI that supports vector types that can be directly stored by STNP. Note that the implementation may not catch all valid cases (e.g. because the vector is a multiple of 256 and could be broken down to multiple valid 256 bit stores), but it is good enough for LV to vectorize loops with NT stores, as LV only passes in a vector with 2 elements to check. LV seems to also be the only user of isLegalNTStore. We should also do the same for NT loads, but before that we need to ensure that we properly lower LDNP of vectors, similar to D72919. Reviewers: dmgreen, samparker, t.p.northover, ab Reviewed By: dmgreen Differential Revision: https://reviews.llvm.org/D73158
-
Alina Sbirlea authored
-
Jonas Devlieghere authored
Different buffering behavior during capture and replay caused some of the shell tests to fail when run from a reproducer. By disabling stdout buffering we get a better approximation of how things get flushed during an regular debug session. There is a performance impact but since this only affects replay this is acceptable.
-
Tom Stellard authored
This reverts commit df839cfd. This change used cmake's list filter operation which was not added until cmake 3.6.
-
Tom Stellard authored
Summary: We were linking all the clang objects and shared libraries into libclang-cpp.so, which was causing the command line options to be registered twice. Reviewers: beanz, mgorny Reviewed By: beanz, mgorny Subscribers: mgorny, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D68520
-
Jon Chesterfield authored
Summary: [nfc][libomptarget] Remove SHARED annotation from local variables A few local variables in reduction.cu were marked SHARED. This patch leaves all per-kernel global state localised in omp_data.cu. Reviewers: ABataev, jdoerfert, grokos Reviewed By: jdoerfert Subscribers: openmp-commits Tags: #openmp Differential Revision: https://reviews.llvm.org/D73239
-
Jason Molenda authored
Fred suggested that instead of embedded CMakeLists.txt in the binary as the contents of a special section, see if /dev/null would work. It does.
-
Alina Sbirlea authored
Minor clean-ups + clang-format.
-
Alina Sbirlea authored
-
Jonas Devlieghere authored
The reproducers currently only shadow the command interpreter. It would be possible to make it work for the Lua interpreter which uses the IOHandlerEditline under the hood, but the Python one runs a REPL in Python itself so there's no (straightforward) way to shadow that. Given that we already capture any API calls, this isn't super high on my list of priorities.
-
Jonas Devlieghere authored
The VFS mapping writer assumes that all the paths it gets are files. When passed a directory, it ends up as a file in the VFS mapping twice, once as a file and once as a directory. { 'type': 'file', 'name': "Output", 'external-contents': "/root/path/to/Output" }, { 'type': 'directory', 'name': "Output", 'contents': [ ... ] }
-
- Jan 22, 2020
-
-
Richard Smith authored
"Clang 10" not "SVN".
-
Nikita Popov authored
Fixes https://bugs.llvm.org/show_bug.cgi?id=44529. We already have a combine to sink a negation through a left-shift, but it currently only works if the shift operand is negatable without creating any instructions. This patch introduces freelyNegateValue() as a more powerful extension of dyn_castNegVal(), which allows negating a value as long as this doesn't end up increasing instruction count. Specifically, this patch adds support for negating A-B to B-A. This mechanism could in the future be extended to handle general negation chains that a) start at a proper 0-X negation and b) only require one operand to be freely negatable. This would end up as a weaker form of D68408 aimed at the most obviously profitable subset that eliminates a negation entirely. Differential Revision: https://reviews.llvm.org/D72978
-
Nikita Popov authored
-
Craig Topper authored
[X86] Cast to __v4hi instead of __m64 in the implementation of _mm_extract_pi16 and _mm_insert_pi16. __m64 is a vector of 1 long long. But the builtins these intrinsics are calling expect a vector of 4 shorts. Fixes PR44589
-
Nicolas Vasilache authored
Summary: This diff extends the Linalg EDSC builders so we can easily create mixed tensor/buffer linalg.generic ops. This is expected to be useful for HLO -> Linalg lowering. The StructuredIndexed struct is made to derive from ValueHandle and can now capture a type + indexing expressions. This is used to represent return tensors. Pointwise unary and binary builders are extended to allow both output buffers and return tensors. This has implications on the number of region arguments. Reviewers: ftynse, hanchung, asaadaldien Subscribers: mehdi_amini, rriddle, jpienaar, burmako, shauheen, antiagainst, arpith-jacob, mgester, lucyrfox, aartbik, liufengdb, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D73149
-
Davide Italiano authored
-
Nikita Popov authored
This addresses https://bugs.llvm.org/show_bug.cgi?id=42801. The m_c_ICmp() matcher is changed to provide the swapped predicate if the operands are swapped. Existing uses of m_c_ICmp() fall in one of two categories: Working on equality predicates only, where swapping is irrelevant. Or performing a manual swap, in which case this patch removes it. The only exception is the foldICmpWithLowBitMaskedVal() fold, which does not swap the predicate, and instead reasons about whether a swap occurred or not for each predicate. Getting the swapped predicate allows us to merge the logic for pairs of predicates, instead of duplicating it. Differential Revision: https://reviews.llvm.org/D72976
-