- Jun 28, 2021
-
-
Zarko Todorovski authored
On AIX the alignment implementation has the storage aligned to the preferred alignment instead of the alignment of a type. Macro guard these tests for AIX and have them pass when the "reference alignment" is less than or equal to the alignment observed. In other words, the alignment applied is at least as strict as the required alignment. Reviewed By: hubert.reinterpretcast Differential Revision: https://reviews.llvm.org/D104786
-
Sander de Smalen authored
This patch relands https://reviews.llvm.org/D104454, but fixes some failing builds on Mac OS which apparently has a different definition for size_t, that caused 'ambiguous operator overload' for the implicit conversion of TypeSize to a scalar value. This reverts commit b732e6c9.
-
Ahsan Saghir authored
Peephole optimizer should not be introducing sub-reg definitions as they are illegal in machine SSA phase. This patch modifies the optimizer to not emit sub-register definitions. Reviewed By: arsenm Differential Revision: https://reviews.llvm.org/D103408
-
Bradley Smith authored
This helps remove extra comparisons when generating masks for fixed length masked operations. Differential Revision: https://reviews.llvm.org/D104910
-
Jonathan Crowther authored
In typeinfo there is a reinterpret_cast between a uintptr_t and size_t. These are two integer types and therefore a reinterpret_cast is not right for this situation. It looks like it may have been copied and pasted from above in the file. An implicit cast works in it's place. Reviewed By: ldionne, #libc Differential Revision: https://reviews.llvm.org/D104814
-
Reshabh Sharma authored
Compiler crashes at an assertion while casting operands to PtrToIntInst at some cases when ptrtoint is present as an explicit operand to inttoptr. Explicit instruction operator as operand can not be casted to an Instruction. This patch replaces cast from PtrToInst to Operator which are later checked for constant expressions. Differential Revision: https://reviews.llvm.org/D105002
-
Joseph Huber authored
-
Gabor Marton authored
-
Ben Shi authored
Reviewed By: dylanmckay Differential Revision: https://reviews.llvm.org/D99239
-
Joseph Huber authored
-
Brendon Cahoon authored
Adds legalizer, register bank select, and instruction select support for G_SBFX and G_UBFX. These opcodes generate scalar or vector ALU bitfield extract instructions for AMDGPU. The instructions allow both constant or register values for the offset and width operands. The 32-bit scalar version is expanded to a sequence that combines the offset and width into a single register. There are no 64-bit vgpr bitfield extract instructions, so the operations are expanded to a sequence of instructions that implement the operation. If the width is a constant, then the 32-bit bitfield extract instructions are used. Moved the AArch64 specific code for creating G_SBFX to CombinerHelper.cpp so that it can be used by other targets. Only bitfield extracts with constant offset and width values are handled currently. Differential Revision: https://reviews.llvm.org/D100149
-
Corentin Jabot authored
Partially implement P0315R4. This patch allow lambda in unevaluated context. It does not implement temp.deduct/9.
-
Lucas Prates authored
-
Stephan Herhut authored
This lowering uses a library call to implement copying in the general case, i.e., supporting arbitrary rank and strided layouts.
-
Joseph Huber authored
Increase the number of attributor iterations on a GPU target. I forgot to change this in D104416. Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D104920
-
Lucas Prates authored
This adds support for Armv9-A's Realm Management Extension, including three new system registers - MFAR_EL3, GPCCR_EL3 and GPTBR_EL3 - and four new TLBI instructions. The reference for the Realm Management Extension can be found at: https://developer.arm.com/documentation/ddi0615/aa. Based on patches by Victor Campos. Reviewed By: dmgreen Differential Revision: https://reviews.llvm.org/D104773
-
Lucas Prates authored
Prior to the changes from D52010, clobbering Thumb's high registers in inline asm would cause incorrect code to be generated - or an assertion failure for debug builds. Now that the issue is no longer reproducible, this patch adds a MIR test to cover that scenario. Reviewed By: arsenm Differential Revision: https://reviews.llvm.org/D96335
-
Pushpinder Singh authored
The logic is almost similar to that of system.cpp with one change that instead of adding all the memory pools to a device struct it only keeps a single pool. The existing approach also always allocated memory on the first HSA pool found for a GPU. This depends on D104691. The goal of this series of patches is to remove _atl_machine global. The next patch will drop g_atl_machine entirely. Reviewed By: JonChesterfield Differential Revision: https://reviews.llvm.org/D104695
-
Valeriy Savchenko authored
Since RangeSet::Factory actually contains BasicValueFactory, we can remove value factory from many function signatures inside the solver. Differential Revision: https://reviews.llvm.org/D105005
-
Gabor Marton authored
This proved to be very useful during debugging. Differential Revision: https://reviews.llvm.org/D103967
-
David Spickett authored
I can't be sure of the cause but I believe these fail due to to fast unwinding not working on Thumb. Whatever the case, they have been failing on our bots for a long time: https://lab.llvm.org/buildbot/#/builders/170/builds/46 Require fast-unwinder-works for both.
-
James Henderson authored
This change modifies the existing check-debuginfo target to only run the debuginfo tests within the cross-project-tests, and adds a new target (check-cross-project) which runs all the tests. The former has also been modified to not be included in check-all (since the check-cross-project target covers them). Differential Revision: https://reviews.llvm.org/D96513 Reviewed by: aprantl
-
James Henderson authored
Also mark debuginfo_tests as UNSUPPORTED if clang can't be found and remove it from the list of test dependencies if not in LLVM_ENABLE_PROJECTS. Differential Revision: https://reviews.llvm.org/D96511 Reviewed by: aprantl
-
James Henderson authored
Differential Revision: https://reviews.llvm.org/D96510 Reviewed by: aprantl
-
James Henderson authored
Differential Revision: https://reviews.llvm.org/D96509 Reviewed by: aprantl
-
James Henderson authored
Discussion thread: https://lists.llvm.org/pipermail/llvm-dev/2021-January/148048.html Move debuginfo-test into a subdirectory of a new top-level directory, called cross-project-tests. The new name replaces "debuginfo-test" as an LLVM project enabled via LLVM_ENABLE_PROJECTS. Differential Revision: https://reviews.llvm.org/D95339 Reviewed by: aprantl
-
Kerry McLaughlin authored
Currently we will allow loops with a fixed width VF of 1 to vectorize if the -enable-strict-reductions flag is set. However, the loop vectorizer will not use ordered reductions if `VF.isScalar()` and the resulting vectorized loop will be out of order. This patch removes `VF.isVector()` when checking if ordered reductions should be used. Also, instead of converting the FAdds to reductions if the VF = 1, operands of the FAdds are changed such that the order is preserved. Reviewed By: david-arm Differential Revision: https://reviews.llvm.org/D104533
-
Florian Hahn authored
Sinking scalar operands into predicated-triangle regions may allow merging regions. This patch adds a VPlan-to-VPlan transform that tries to merge predicate-triangle regions after sinking. Reviewed By: Ayal Differential Revision: https://reviews.llvm.org/D100260
-
David Spickett authored
This test has always failed on 32 bit armv8 bots: https://lab.llvm.org/buildbot/#/builders/178/builds/42 Due to the output order of some symbols changing. I don't think this is an Arm specific issue so disabling on 32 bit while it's investigated.
-
Florian Mayer authored
Reviewed By: hctim, eugenis Differential Revision: https://reviews.llvm.org/D104787
-
Whisperity authored
-
LLVM GN Syncbot authored
-
Whisperity authored
[clang-tidy] Suppress reports to patternedly named parameters in 'bugprone-easily-swappable-parameters' While the original check's purpose is to identify potentially dangerous functions based on the parameter types (as identifier names do not mean anything when it comes to the language rules), unfortunately, such a plain interface check rule can be incredibly noisy. While the previous "filtering heuristic" is able to find many similar usages, there is an entire class of parameters that should not be warned about very easily mixed by that check: parameters that have a name and their name follows a pattern, e.g. `text1, text2, text3, ...`.` This patch implements a simple, but powerful rule, that allows us to detect such cases and ensure that no warnings are emitted for parameter sequences that follow a pattern, even if their types allow for them to be potentially mixed at a call site. Given a threshold `k`, warnings about two parameters are filtered from the result set if the names of the parameters are e...
-
Whisperity authored
[clang-tidy] Suppress reports to similarly used parameters in 'bugprone-easily-swappable-parameters' There are several types of functions and various reasons why some "swappable parameters" cannot be fixed with changing the parameters' types, etc. The most common example might be int `min(int a, int b)`... no matter what you do, the two parameters must remain the same type. The **filtering heuristic** implemented in this patch deals with trying to find such functions during the modelling and building of the swappable parameter range. If the parameter currently scrutinised matches either of the predicates below, it will be regarded as **not swappable** even if the type of the parameter matches. Reviewed By: aaron.ballman Differential Revision: http://reviews.llvm.org/D78652
-
Whisperity authored
[clang-tidy] Extend 'bugprone-easily-swappable-parameters' with mixability because of implicit conversions Adds a relaxation option ModelImplicitConversions which will make the check report for cases where parameters refer to types that are implicitly convertible to one another. Example: struct IntBox { IntBox(int); operator int(); }; void foo(int i, double d, IntBox ib) {} Implicit conversions are the last to model in the set of things that are reasons for the possibility of a function being called the wrong way which is not always immediately apparent when looking at the function (signature or call). Reviewed By: aaron.ballman, martong Differential Revision: http://reviews.llvm.org/D75041 -
Whisperity authored
[clang-tidy] Extend 'bugprone-easily-swappable-parameters' with optionally considering differently qualified types mixable Adds a relaxation option QualifiersMix which will make the check report for cases where parameters refer to the same type if they only differ in qualifiers. This makes cases, such as the following, not warned about by default, produce a warning. void* memcpy(void* dst, const void* src, unsigned size) {} However, unless people meticulously const their local variables, unfortunately, even such a function carry a potential swap: T* obj = new T; // Not const!!! void* buf = malloc(sizeof(T)); memcpy(obj, buf, sizeof(T)); // ^~~ ^~~ accidental swap here, even though the interface "specified" a const. Reviewed By: aaron.ballman Differential Revision: http://reviews.llvm.org/D96355 -
Whisperity authored
The base patch only deals with strict (canonical) type equality, which is merely a subset of all the dangerous function interfaces that we intend to find. In addition, in the base patch, canonical type equivalence is not diagnosed in a way that is immediately apparent to the user. This patch extends the check with two features: * Proper typedef diagnostics and explanations to the user. * "Reference bind power" matching. Case 2 is a necessary addition because in every case someone encounters a function `f(T t, const T& tr)`, any expression that might be passed to either can be passed to both. Thus, such adjacent parameter sequences should be matched. Reviewed By: aaron.ballman Differential Revision: http://reviews.llvm.org/D95736
-
Whisperity authored
Finds function definitions where parameters of convertible types follow each other directly, making call sites prone to calling the function with swapped (or badly ordered) arguments. Such constructs are usually the result of inefficient design and lack of exploitation of strong type capabilities that are possible in the language. This check finds and flags **function definitions** and **not** call sites! Reviewed By: aaron.ballman, alexfh Differential Revision: http://reviews.llvm.org/D69560
-
David Spickett authored
Our v7 Linux bots report the arch as "armv7l", not "armv7".
-
Tobias Gysi authored
After https://reviews.llvm.org/D104109, structured ops support scalar inputs. As a result, the capture mechanism meant to pass non-shaped parameters got redundant. The patch removes the capture semantics after the FillOp migrated to use scalar operands https://reviews.llvm.org/D104121. Differential Revision: https://reviews.llvm.org/D104785
-