- Jan 05, 2022
-
-
David Green authored
-
Matthias Springer authored
This change simplifies BufferizationState. Having `rewriter` in BufferizationState could be confusing to users because a rewriter is also passed to each `bufferize` function and it is not obvious (by looking at the API) that these two rewriters are the same. Differential Revision: https://reviews.llvm.org/D116444
-
Sam McCall authored
-
Haojian Wu authored
-
Simon Tatham authored
This family of instructions includes CPYF (copy forward), CPYB (copy backward), SET (memset) and SETG (memset + initialise MTE tags), with some sub-variants to indicate whether address translation is done in a privileged or unprivileged way. For the copy instructions, you can separately specify the read and write translations (so that kernels can safely use these instructions in syscall handlers, to memcpy between the calling process's user-space memory map and the kernel's own privileged one). The unusual thing about these instructions is that they write back to multiple registers, because they perform an implementation-defined amount of copying each time they run, and write back to _all_ the address and size registers to indicate how much remains to be done (and the code is expected to loop on them until the size register becomes zero). But this is no problem in LLVM - you just define each instruction to have multiple outputs, multiple inputs, and a set of constraints tying their register numbers together appropriately. This commit introduces a special subtarget feature called MOPS (after the name the spec gives to the CPU id field), which is a dependency of the top-level 8.8-A feature, and uses that to enable most of the new instructions. The SETMG instructions also depend on MTE (and the test checks that). Differential Revision: https://reviews.llvm.org/D116157
-
gbreynoo authored
Other tools take their tool name from argv[0] for use in output messages. This change makes llvm-strings consistent with other tools rather than using a hard coded value. Differential Revision: https://reviews.llvm.org/D116604
-
Sam McCall authored
Because declarators nest inside-out, we logically need to claim tokens for parent declarators logically before child ones. This is the ultimate reason we had problems with DeclaratorDecl, ArrayType etc. However actually changing the order of traversal is hard, especially for nodes that have both declarator and non-declarator children. Since there's only a few TypeLocs corresponding to declarators, we just have them claim the exact tokens rather than rely on nesting. This fixes handling of complex declarators, like `int (*Fun(OuterT^ype))(InnerType);`. This avoids the need for the DeclaratorDecl early-claim hack, which is removed. Unfortunately the DeclaratorDecl early-claims were covering up an AST anomaly around CXXConstructExpr, so we need to fix that up too. Based on D116623 and D116618 Differential Revision: https://reviews.llvm.org/D116630
-
Nicolas Vasilache authored
LICM checks that nested ops depend only on values defined outside before performing hoisting. However, it specifically omits to check for terminators which can lead to SSA violations. This revision fixes the incorrect behavior. Differential Revision: https://reviews.llvm.org/D116657
-
Florian Hahn authored
VPWidenMemoryInstructionRecipe is a VPValue, so this can be passed directly, instead of relying on getVPSingleValue.
-
Jan Svoboda authored
-
Nicolas Vasilache authored
Differential Revision: https://reviews.llvm.org/D116648
-
Clement Courbet authored
The check should not trigger on lvalue/rvalue overload pairs: ``` struct S { S(const A& a) : a(a) {} S(A&& a) : a(std::move(a)) {} A a; } ``` Differential Revision: https://reviews.llvm.org/D116535 -
Sanjay Patel authored
-
Sanjay Patel authored
-
Benjamin Kramer authored
std::make_reverse_iterator is a C++14 feature, gcc has it since GCC 5.1.
-
Nikita Popov authored
We should bail out if the index is >= the size, not > the size. Fixes https://github.com/llvm/llvm-project/issues/53002.
-
Nicholas Guy authored
Differential Revision: https://reviews.llvm.org/D114879
-
Nicholas Guy authored
The current AsmPrinter has support to emit the "Max Skip" operand (the 3rd of .p2align), however has no support for it to actually be specified. Adding MaxBytesForAlignment to MachineBasicBlock provides this capability on a per-block basis. Leaving the value as default (0) causes no observable differences in behaviour. Differential Revision: https://reviews.llvm.org/D114590
-
Marek Kurdej authored
[clang-format] Fix indentation for array variables with alignment of consecutive assignments and declarations. Fixes https://github.com/llvm/llvm-project/issues/52914. Reviewed By: HazardyKnusperkeks, owenpan Differential Revision: https://reviews.llvm.org/D116527
-
Dmitry Vyukov authored
Differential Revision: https://reviews.llvm.org/D116653
-
Marek Kurdej authored
Introduced in https://reviews.llvm.org/D115168. Reviewed By: MyDeveloperDay, HazardyKnusperkeks Differential Revision: https://reviews.llvm.org/D116647
-
Pavel Labath authored
D116372, while fixing one kind of a race, ended up creating a new one. The new issue could occur when one inferior thread exits while another thread initiates termination of the entire process (exit_group(2)). With some bad luck, we could start processing the exit notification (PTRACE_EVENT_EXIT) only to have the become unresponsive (ESRCH) in the middle of the MonitorCallback function. This function would then delete the thread from our list even though it wasn't completely dead (it stays zombified until we read the WIFEXITED event). The linux kernel will not deliver the exited event for the entire process until we process individual thread exits. In a pre-D116372 world, this wouldn't be a problem because we would read this event (even though we would not know what to do with it) with waitpid(-1). Now, when we issue invididual waitpids, this event will never be picked up, and we end up hanging. The fix for this is actually quite simple -- don't delete the thread in this situation. The thread will be deleted when the WIFEXITED event comes. This situation was kind of already tested by TestCreateDuringInstructionStep (which is how I found this problem), but it was mostly accidental, so I am also creating a dedicated test which reproduces this situation.
-
Sander de Smalen authored
This was originally added in rG22174f5d although that patch doesn't really mention any reasons for ignoring the pointer type in this calculation if the memory access isn't consecutive. Reviewed By: david-arm Differential Revision: https://reviews.llvm.org/D115356
-
Dmitry Vyukov authored
A signal handler can alter ucontext_t to affect execution after the signal returns. Check that the contents are initialized. Restoring unitialized values in registers can't be good. Reviewed By: vitalybuka Differential Revision: https://reviews.llvm.org/D116209
-
Dmitry Vyukov authored
ucontext_t can be larger than its static size if it contains AVX state and YMM/ZMM registers. Currently a signal handler that tries to access that state can produce false positives with random origins on stack. Account for the additional ucontext_t state. Reviewed By: vitalybuka Differential Revision: https://reviews.llvm.org/D116208
-
Archibald Elliott authored
This reverts commits: - 04192422. - 015e08c6 D114206 was landed before it was approved - and was landed knowing that the test crashed on windows, without an xfail. The promised follow-up commit with fixes has not appeared since it was promised on December 14th.
-
Matthias Springer authored
This is in preparation of unifying core bufferization and Comprehensive Bufferize. Differential Revision: https://reviews.llvm.org/D116102
-
Paul Walker authored
Differential Revision: https://reviews.llvm.org/D116227
-
Paul Walker authored
When constructDup is passed an extract_subvector it tries to use extract_subvector's operand directly when creating the DUPLANE. This is invalid when extracting from a scalable vector because the necessary DUPLANE ISel patterns do not exist. NOTE: This patch is an update to https://reviews.llvm.org/D110524 that originally fixed this but introduced a bug when the result VT is 64bits. I've restructured the code so the critial final else block is entered when necessary. Differential Revision: https://reviews.llvm.org/D116442
-
Nikita Popov authored
In particular, this also preserves undef when loading from padding, rather than converting it to zero through a different codepath. This is the remaining part of D115924.
-
Nikita Popov authored
This currently load zero rather than undef.
-
Björn Schäpers authored
Differential Revision: https://reviews.llvm.org/D116563
-
Björn Schäpers authored
Use that name. Also remove the one check for its existence, that is given. Differential Revision: https://reviews.llvm.org/D116562
-
Björn Schäpers authored
Differential Revision: https://reviews.llvm.org/D116561
-
Björn Schäpers authored
Differential Revision: https://reviews.llvm.org/D116560
-
Björn Schäpers authored
Differential Revision: https://reviews.llvm.org/D116559
-
Björn Schäpers authored
And then use the argument and member. Differential Revision: https://reviews.llvm.org/D116558
-
Björn Schäpers authored
the Style's equality operator. This amends 6f6f88ff Differential Revision: https://reviews.llvm.org/D116557
-
Björn Schäpers authored
I think the deque was chosen because of a better push_front, but in combination with llvm::reverse the push_back'ed vector should be the better choice. Differential Revision: https://reviews.llvm.org/D115064
-
Nikita Popov authored
There are a number of places that specially handle loads from a uniform value where all the bits are the same (zero, one, undef, poison), because we a) don't care about the load offset in that case b) it bypasses casts that might not be legal generally but do work with uniform values. We had multiple implementations of this, with a different set of supported values each time. This replaces two usages with a more complete helper. Other usages will be replaced separately, because they have larger impact. This is part of D115924.
-