- Apr 30, 2021
-
-
Adam Czachorowski authored
There already was a check for undeduced and incomplete types, but it failed to trigger when outer type (SubstTemplateTypeParm in test) looked fine, but inner type was not. Differential Revision: https://reviews.llvm.org/D100667
-
Jay Foad authored
-
Dmitry Vyukov authored
Currently we have a bit of a mess related to tids: - sanitizers re-declare kInvalidTid multiple times - some call it kUnknownTid - implicit assumptions that main tid is 0 - asan/memprof claim their tids need to fit into 24 bits, but this does not seem to be true anymore - inconsistent use of u32/int to store tids Introduce kInvalidTid/kMainTid in sanitizer_common and use them consistently. Reviewed By: vitalybuka Differential Revision: https://reviews.llvm.org/D101428
-
LLVM GN Syncbot authored
-
Simon Moll authored
-
Simon Moll authored
This patch implements expansion of llvm.vp.* intrinsics (https://llvm.org/docs/LangRef.html#vector-predication-intrinsics). VP expansion is required for targets that do not implement VP code generation. Since expansion is controllable with TTI, targets can switch on the VP intrinsics they do support in their backend offering a smooth transition strategy for VP code generation (VE, RISC-V V, ARM SVE, AVX512, ..). Reviewed By: rogfer01 Differential Revision: https://reviews.llvm.org/D78203
-
Jay Foad authored
The only effect of the optimization is to remove s_set_gpr_idx_* instructions, and update_mir_test_checks.py always inserts CHECK: rather than CHECK-NEXT: checks, so without this implicit negative check, the tests would always pass even if the optimization did nothing. Differential Revision: https://reviews.llvm.org/D101622
-
Anastasia Stulova authored
Removed extension begin/end pragma as it has no effect and it is added unconditionally for all targets. Differential Revision: https://reviews.llvm.org/D92244
-
Nico Weber authored
No behavior change. Differential Revision: https://reviews.llvm.org/D101623
-
Pooja Yadav authored
Added information about language bindings provided by LLVM. Reviewed By: xgupta, gandhi21299 Differential Revision: https://reviews.llvm.org/D101295
-
Nico Weber authored
Cosmetic, no behavior change.
-
Andrea Di Biagio authored
Early exit from method DispatchStage::isAvailable() if the dispatch group is already full. Not all instructions declare at least one uOP. Fixes PR50174.
-
Florian Hahn authored
Currently Clang does not add mustprogress to inifinite loops with a known constant condition, matching C11 behavior. The forward progress guarantee in C++11 and later should allow us to add mustprogress to any loop (http://eel.is/c++draft/intro.progress#1). This allows us to simplify the code dealing with adding mustprogress a bit. Reviewed By: aaron.ballman, lebedev.ri Differential Revision: https://reviews.llvm.org/D96418
-
Jay Foad authored
In some cases the lack of --- or ... confused update_mir_test_checks.py into not adding any checks for a function.
-
Arthur O'Dwyer authored
As these jobs only run in a couple seconds, and block starting of other jobs, they can run on the "service" queue which doesn't get blocked by other long-running jobs. Differential Revision: https://reviews.llvm.org/D101437
-
Arthur O'Dwyer authored
-
Tomas Matheson authored
Use of bitcast resulted in lanes being swapped for vcreateq with big endian. Fix this by using vreinterpret. No code change for little endian. Adds IR lit test. Differential Revision: https://reviews.llvm.org/D101606
-
Nathan James authored
Due to a somewhat annoying, but necessary, shortfall in -Wunused-lambda-capture, These unused captures aren't warned about. Reviewed By: kadircet Differential Revision: https://reviews.llvm.org/D101611
-
Hans Wennborg authored
as a way of not running it on Windows, where the file paths when extracting repro2.tar can become longer than the maximum file length limit (depending on the build dir name) and cause the test to fail. (See https://crbug.com/1204463 for example test failure.)
-
Martin Probst authored
Previously, the JavaScript import sorter would ignore `// clang-format off` and `on` comments. This change fixes that. It tracks whether formatting is enabled for a stretch of imports, and then only sorts and merges the imports where formatting is enabled, in individual chunks. This means that there's no meaningful total order when module references are mixed with blocks that have formatting disabled. The alternative approach would have been to sort all imports that have formatting enabled in one group. However that raises the question where to insert the formatting-off block, which can also impact symbol visibility (in particular for exports). In practice, sorting in chunks probably isn't a big problem. This change also simplifies the general algorithm: instead of tracking indices separately and sorting them, it just sorts the vector of module references. And instead of attempting to do fine grained tracking of whether the code changed order, it just prints out the module references text, and compares that to the previous text. Given that source files typically have dozens, but not even hundreds of imports, the performance impact seems negligible. Differential Revision: https://reviews.llvm.org/D101515
-
Evgeniy Brevnov authored
Previous attempt to fix infinite recursion in min/max reassociation was not fully successful (D100170). Newly discovered failing case is due to not properly handled when there is a single use. It should be processed separately from 2 uses case. Reviewed By: mkazantsev Differential Revision: https://reviews.llvm.org/D101359
-
Alexey Bader authored
Differential Revision: https://reviews.llvm.org/D101549
-
Florian Hahn authored
Hoisting and sinking instructions out of conditional blocks enables additional vectorization by: 1. Executing memory accesses unconditionally. 2. Reducing the number of instructions that need predication. After disabling early hoisting / sinking, we miss out on a few vectorization opportunities. One of those is causing a ~10% performance regression in one of the Geekbench benchmarks on AArch64. This patch tires to recover the regression by running hoisting/sinking as part of a SimplifyCFG run after LoopRotate and before LoopVectorize. Note that in the legacy pass-manager, we run LoopRotate just before vectorization again and there's no SimplifyCFG run in between, so the sinking/hoisting may impact the later run on LoopRotate. But the impact should be limited and the benefit of hosting/sinking at this stage should outweigh the risk of not rotating. Compile-time impact looks slightly positive for most cases. http://llvm-compile-time-tracker.com/compare.php?from=2ea7fb7b1c045a7d60fcccf3df3ebb26aa3699e5&to=e58b4a763c691da651f25996aad619cb3d946faf&stat=instructions NewPM-O3: geomean -0.19% NewPM-ReleaseThinLTO: geoman -0.54% NewPM-ReleaseLTO-g: geomean -0.03% With a few benchmarks seeing a notable increase, but also some improvements. Alternative to D101290. Reviewed By: lebedev.ri Differential Revision: https://reviews.llvm.org/D101468
-
Jun Ma authored
As discussed in D100107, this patch first convert index_vector to step_vector, and convert step_vector back to index_vector after LegalizeDAG. Differential Revision: https://reviews.llvm.org/D100816
-
Roman Lebedev authored
It seems incorrect to use TTI data in some places, and override it in others. In this case, TTI says that `extractvalue` are free, yet we bill them. While this doesn't address https://bugs.llvm.org/show_bug.cgi?id=50099 yet, it reduces the cost from 55 to 50 while the threshold is 45. Differential Revision: https://reviews.llvm.org/D101228
-
Neal (nealsid) authored
Currently we call el_set directly to configure the editor in the libedit wrapper. There are some cases in which this causes extra casting, but we pass captureless lambdas as function pointers, which should work out of the box. Since el_set takes varargs, if the cast is incorrect or if the cast is not present, it causes a run time failure rather than compile error. This change makes it so a few different types of configuration is done inside a helper function to provide type safety and eliminate that casting. I didn't do all edit line configuration because I'm not sure how important it was in other cases and it might require something more general keep up with libedit's signature. I'm open to suggestions, though. Reviewed By: teemperor, JDevlieghere Differential Revision: https://reviews.llvm.org/D101250
-
David Stuttard authored
Slight refactor for clarity. Change-Id: Ib25e7f4582c67a7c57f066cfd5382c1405d7d4c5 Differential Revision: https://reviews.llvm.org/D101610
-
David Stuttard authored
Change-Id: Id0c1d5535b53e2aebe314151c0efa585e763f3f6 Differential Revision: https://reviews.llvm.org/D100093
-
Keith Walker authored
The "Arm C Language extensions" document (the current version can be found at https://developer.arm.com/documentation/101028/0012/?lang=en) states that the name of the feature test macro for the FP16 FML extension is __ARM_FEATURE_FP16_FML. Differential Revision: https://reviews.llvm.org/D101532
-
David Spickett authored
Covering basic cases where you have 1 item on 1 line. Apart from eFormatCharArray, where using multiple lines highlights the difference between it and eFormatVectorOfChar. Reviewed By: #lldb, teemperor Differential Revision: https://reviews.llvm.org/D101453
-
Fraser Cormack authored
-
Fraser Cormack authored
DAGCombiner was recently taught how to combine STEP_VECTOR nodes, meaning the step value is no longer guaranteed to be one by the time it reaches the backend for lowering. This patch supports such cases on RISC-V by lowering to other step values to a multiply following the vid.v instruction. It includes a small optimization for common cases where the multiply can be expressed as a shift left. Reviewed By: rogfer01 Differential Revision: https://reviews.llvm.org/D100856
-
Timm Bäder authored
The attribute does not belong to the if statement before and trips up gcc's indentation checker.
-
Dmitry Vyukov authored
Arm64 builders failed with: error: use of undeclared identifier 'SYS_fork' https://lab.llvm.org/buildbot/#/builders/7/builds/2575 Indeed, not all arches have fork syscall. Implement fork via clone on these arches. Differential Revision: https://reviews.llvm.org/D101603
-
Dominik Montada authored
Reviewed By: dsanders Differential Revision: https://reviews.llvm.org/D91703
-
Jay Foad authored
-
Martin Storsjö authored
If compiling with GCC or linking with ld.bfd, these options have little effect, but if built with Clang and linked with LLD, they provide a quite notable size decrease - this shrinks an entire llvm-mingw distribution package by 22%. If building with BUILD_SHARED_LIBS or LLVM_BUILD_LLVM_DYLIB with LLD, this requires a version of LLD that contains a fix for auto exporting symbols from comdats, 2b01a417. Differential Revision: https://reviews.llvm.org/D101568
-
Evgeny Leviant authored
Pass structure can change when -O0 is given and extensions are used.
-
Martin Storsjö authored
When looking up data referenced from pdata/xdata structures, the referenced data can be found in two different ways: - For an unrelocated object file, it's located via a relocation - For a relocated, linked image, the data is referenced with an (image relative) absolute address For the latter case, the absolute address can optionally be described with a symbol. For the case of an object file, there's two offsets involved; one immediate offset encoded in the data location that is modified by the relocation, and a section offset in the symbol. Previously, for the ExceptionRecord field, we printed the offset from the symbol (only) but used the immediate offset ignoring the symbol's address (using only the symbol's section) for printing the exception data. Add a helper method for doing the lookup and address calculation, for simplifying the calling code and making all the cases consistent. This addresses an existing FIXME comment, fixing printing of the exception data for cases where relocations point at individual symbols in the xdata section (which is what MSVC generates) instead of all relocations pointing at the start of the xdata section (which is what LLVM generates). This also fixes printing of the function name for packed entries in linked images. Relanded with a format string fix in the formatSymbol function; one can't use %X as format string for an uint64_t. That bug has been present since this code was added in e6971cab. Differential Revision: https://reviews.llvm.org/D100305
-
Dmitry Vyukov authored
Commit efd254b6 ("tsan: fix deadlock in pthread_atfork callbacks") fixed another deadlock related to atfork handling. But builders with DCHECKs enabled reported failures of pthread_atfork_deadlock2.c and pthread_atfork_deadlock3.c tests related to the fact that we hold runtime locks on interceptor exit: https://lab.llvm.org/buildbot/#/builders/70/builds/6727 This issue is somewhat inherent to the current approach, we indeed execute user code (atfork callbacks) with runtime lock held. Refactor fork handling to not run user code (atfork callbacks) with runtime locks held. This change does this by installing own atfork callbacks during runtime initialization. Atfork callbacks run in LIFO order, so the expectation is that our callbacks run last, right before the actual fork. This way we lock runtime mutexes around fork, but not around user callbacks. Extend tests to also install after fork callbacks just to cover more scenarios. Some tests also started reporting real races that we previously suppressed. Also extend tests to cover fork syscall support. Reviewed By: vitalybuka Differential Revision: https://reviews.llvm.org/D101517
-