- Feb 12, 2024
-
-
Timm Bäder authored
This protected GetPtrField and ArrayDecay ops from dummy pointers which fixes the attached test case for designated initializers in C.
-
Timm Bäder authored
-
Timm Bäder authored
-
Balázs Kéri authored
This checker does not exist (any more?) but appeared in the documentation. No other references to CallAndMessageUnInitRefArg are found in the full clang code.
-
Hirofumi Nakamura authored
This implements the annotation of the values in TableGen. The main changes are, - parseTableGenValue(), the simplified parser method for the syntax of values. - modified consumeToken() to parseTableGenValue in 'if', 'assert' and after '='. - modified parseParens() to call parseTableGenValue inside. - modified parseSquare() to to call parseTableGenValue inside, with skipping separator tokens. - modified parseAngle() to call parseTableGenValue inside, with skipping separator tokens.
-
Haojian Wu authored
The change caused an asan crash when running the `QualifierFixerTest.IsQualifierType` unittest, see details: https://github.com/llvm/llvm-project/pull/80241#issuecomment-1938749844 This reverts commit 7f40c5cc.
-
Joseph Huber authored
Summary: A previous patch introduced `all` as a special architecture. I have decided I do not like this name and have changed it to `generic`.
-
Stephen Tozer authored
In `StackInfoBuilder::visit(Instruction &Inst)`, operations are performed on memory-related instructions, including debug intrinsics that refer to "interesting" allocas. There is a block that also visits DPValues attached to the instruction, but this block is near the end of the function; this has two problems: 1. The DPValues attached to an instruction precede that instruction, so they should always be processed before the instruction itself. 2. More importantly, some of the paths for visiting other instructions contain early returns, which will result in the DPValues not being visited at all. This patch simply moves the DPValue-visiting block to the top of the function, which should resolve both of these problems.
-
Antonio Frighetto authored
Hint further tail call optimization opportunities when the examined returned value is the return value of a known intrinsic or library function, and it appears as first function argument. Fixes: https://github.com/llvm/llvm-project/issues/75455.
-
Antonio Frighetto authored
-
Joseph Huber authored
Summary: This patch simply states that `__builtin_readcyclecounter` is legal on NVPTX and makes it return the value from the `clock64` sreg. The timer intrinsics are marked as having side effects, which is desireable for timing primitives and required to pattern match the instrinic DAG.
-
Petr authored
I have a Triton kernel, which triggered a heap-use-after-free error in LLVM. The problem was that the same instruction may be added to the `ToSimplify` array multiple times. If this duplicate instruction is trivially dead, it gets deleted on the first pass. Then, on the second pass, the freed instruction is passed. To fix this, I'm adding the instructions to the `ToRemove` array and filter it out for duplicates to avoid possible double frees.
-
Alexey Bataev authored
Added basic support for strided loads support in SLP vectorizer. Supports constant strides only. If the strided load must be reversed, applies -stride to avoid extra reverse shuffle. Reviewers: preames, lukel97 Reviewed By: preames Pull Request: https://github.com/llvm/llvm-project/pull/80310
-
Timm Bäder authored
Use early-out style rather than letting control flow through the entire function.
-
Alexey Bataev authored
extract subvector. Many targets do not have cost for extractsubvector shuffle kind, but have the costs for single source permute. If there are no costs estimation for extractsubvector, better to switchto single source permute for better cost estimation. Reviewers: RKSimon, davemgreen, arsenm Reviewed By: RKSimon Pull Request: https://github.com/llvm/llvm-project/pull/79837
-
Nikita Popov authored
For getelementptr i8 (aka ptradd) we can skip the whole logic and directly use the offset. As we're now canonicalizing to this form, it's pretty common and worth having a fast-path for.
-
David Green authored
The IR may contain multiple llvm.vscale intrinsics that have not been CSEd. This patch ensures that multiple vscales can be treated the same, either in the decomposition of geps and when we subtract one decomposition from another.
-
Mariusz Sikora authored
-
Andrzej Warzyński authored
This is a follow-up for #81187, it simply adds missing tests for scalable vectors.
-
Martin Storsjö authored
If llvm-readobj is built with a 32 bit time_t, it can't print such timestamps correctly.
-
Florian Hahn authored
-
Serge Pavlov authored
-
Vyacheslav Levytskyy authored
This PR adds initial support for "SPV_INTEL_function_pointers" SPIR-V extension: https://github.com/intel/llvm/blob/sycl/sycl/doc/design/spirv-extensions/SPV_INTEL_function_pointers.asciidoc The goal of the extension is to support indirect function calls and translation of function pointers into SPIR-V.
-
David Green authored
This extends #80818 when IsNSW is lost (possibly due to looking through multiple GEPs), to check the vscale_range for an access that will not overflow even with the maximum range.
-
jeanPerier authored
Static info generated to describe derived types contain an array listing the components of some derived type. The parent component must be first for the runtime to properly works. The current sort was only relying on the offset, but if the parent is an empty type, this did not work properly because its offset did not compare smaller than the first component and the parent was not added first
-
Benji Smith authored
This allows for accessing the function/basic block that a blockaddress constant refers to Due to the difficulties of fully supporting cloning BlockAddress values in echo.cpp, tests are instead done using a unit test. This previously was up for review at https://github.com/llvm/llvm-project/pull/77390.
-
Mariya Podchishchaeva authored
Shadowing warning doesn't make much sense since field is not available in lambda's body without capturing this. Fixes https://github.com/llvm/llvm-project/issues/71976
-
Benjamin Maxwell authored
This tests both #80148 and #80170 work together to allow unrolling the reduction dimension of a matmul.
-
Nikita Popov authored
If there are two undef operands, the select would get folded away entirely. One undef operand can occur if the other two operands do not satisfy the poison implication check. However, I don't think that handling this edge case is worthwhile in this fold. If we wanted to handle this, it would be more natural to do so in the simplifyValueKnownNonZero() fold (as this is actually the property we would be exploiting -- this doesn't really have any relation to taking the log2).
-
Pierre van Houtryve authored
These generic targets include multiple GPUs and will, in the future, provide a way to build once and run on multiple GPU, at the cost of less optimization opportunities. Note that this is just doing the compiler side of things, device libs an runtimes/loader/etc. don't know about these targets yet, so none of them actually work in practice right now. This is just the initial commit to make LLVM aware of them. This contains the documentation changes for both this change and #76954 as well.
-
Vyacheslav Levytskyy authored
The goal of this PR is to implement SPV_INTEL_subgroups extension in SPIR-V Backend.
-
Pierre van Houtryve authored
See #64620 - does not fix the issue but improves the generated code a bit.
-
Nikita Popov authored
This optimization tries to optimize bitcasts from `<N x i1>` to iN, but currently also triggers for `<N x i1>` to `<M x iK>` bitcasts, if custom lowering has been requested for these for an unrelated reason. Fix this by explicitly checking that the result type is scalar. Fixes https://github.com/llvm/llvm-project/issues/81216.
-
Nikita Popov authored
This has been subsumed by simplifyAndOrWithOpReplaced().
-
pvanhout authored
-
Owen Pan authored
-
Owen Pan authored
-
LLVM GN Syncbot authored
-
Nikolas Klauser authored
[libc++] Move the contents of `__fwd/get.h` into the forward declaration headers they actually belong to (#81368) This brings us closer to one forward declaring header per public header.
-