[pull] main from llvm:main - #1721
Merged
Merged
Conversation
…loned Loop interchange moves four blocks to a different loop depth: the outer loop header and latch, and the inner loop preheader and exit block. It also splits the inner loop latch and clones the instructions that compute the latch branch condition and induction variable updates into the new latch block. LangRef guarantees that all uses of the value returned by one execution of a `freeze` observe that same value. The guarantee does not extend across executions, so one `freeze` may yield a different value each time it runs. Different `freeze` instructions may also yield different values for the same `undef` or poison operand. Both steps above can therefore change which value a use observes. Moving a `freeze` to a different loop depth changes which loop iterations share one dynamic result. Uses that observed a single frozen value in the original nest can observe values from separate executions after interchange. Cloning a `freeze` creates a second, independent instruction, so the original and clone can yield different values for the same operand. Reject the interchange when a `freeze` appears in one of the four moved blocks or among the instructions cloned into the new latch. A `freeze` elsewhere still reaches the same uses from each execution, so it remains allowed. That includes a `freeze` in the outer loop preheader and one in the inner loop body outside the cloned computations. The check is conservative and does not try to prove that the operand of a `freeze` is never `undef` or poison. Assisted-by: Claude Opus 5, GPT-5.6 Sol.
The `hlsl::resource_class` and `hlsl::dimension` attributes both take a single argument from a set of choices, but resource_class expects an unevaluated identifier and dimension expects a string literal. Consistently require the literal for both, and fix up the AST printers to match.
Extract `shouldRelaxAlign` from `relaxAlign` and call it during `emitCodeAlignment` to eagerly set the linker-relaxable flag on align fragments. This ensures `isRangeRelaxable` returns correct results before the layout phase.
) Even if an AArch64 build attributes section contains only private subsections and does not define feature flags or PAuth information, `lld` still checks the values defined in the GNU Program Properties section against the build attribute defaults, producing warnings and errors. The patch adjusts the handling of build attributes so that only the existing attributes are used. --- * https://github.com/ARM-software/abi-aa/blob/main/buildattr64/buildattr64.rst
as discussed in #203511, few of these should not really be required (such as sink) with O0/opt-none, yet we require this for consistency between legacy and NPM. We need to look at the passes separately and selectively make strictly optimizing passes optional.
Add CIRGen support for lowering SYCLKernelCallStmt during host compilation, emitting the kernel launch statement in place of the `sycl_kernel_entry_point` function body (mirroring classic CodeGen). Device compilation, were the offload kernel caller entry point is emitted instead, is future work and thus marked as NIY.
This applies #214307 to the first stage as well.
Related to #185382 CIR lowering for saturating-addition intrinsics (https://arm-software.github.io/acle/neon_intrinsics/advsimd.html#saturating-addition) Port tests from `clang/test/CodeGen/AArch64/neon-intrinsics.c` to `clang/test/CodeGen/AArch64/neon/add.c`
…4347) CUFAllocDelay treated the store of a descriptor into a host association tuple as a use, so a device allocatable captured by an internal procedure kept its descriptor allocation in the prologue. That allocates managed memory before the program can call cudaSetDevice, binding a CUDA context to the wrong device. The store now sinks together with the allocation, constrained by the tuple's readers, and the group is placed at the nearest common dominator of all uses so it can sink into a later block.
Many ORC classes capture references to the ExecutionSession -- it is not intended to be moved or copied.
Before this change, jump tables placed in a separate section were emitted with no symbol type, leaving them STT_NOTYPE, and with no size in their ELF file. This change annotates the jump tables with object type and a size when the target supports type/size directives. Jump tables inlined into the function's own section are already covered by that function's symbol, so they are left as-is. This helps when disassembling a file, to understand that the jump table is a single complete object, rather than the symbol being purely a location. I think this reflects the ELF semantics better.
The libc++ test suite requires main() to explicitly return a value, since freestanding support requires it.
Every hardening assertion test used to repeat a hand-rolled set of Lit conditions like `has-unix-headers` and a bunch of others. Instead, define a single Lit feature to handle all of them. Assisted by Claude Fixes #213148
This moves <cmath> towards an umbrella header. Co-authored-by: A. Jiang <de34@live.cn>
…#212702) Previously, there were several issues in the allocators provided by `min_allocator.h` and `test_allocator.h`. 1. Some allocators did not support heterogenous rebinding construction, and thus failed to meet the Cpp17Allocator named requirements. 2. Some allocators only had `operator==`. This was fine since C++20 but not in C++17 where there were no rewritten candidates of `!=`. 3. Many equality operators were non-template and homogeneous. This caused ambiguity since C++20 due to rewritten candidates. This patch fixes these issues by - adding missing constructors, - adding missing `operator!=` (in pre-C++20 modes), and - making `operator==` and some `operator!=` templates. Note that it is intended that `operator==`'s for `test_allocator` perform seemingly redundant constructions (via `static_cast<const test_allocator&>(y)`) to avoid behavioral change as possible because implicit conversion was performed before this patch. A regression test is added.
This was only used by bugpoint as far as I can tell, which was deleted in 9d5574d. Given it is not used anywhere, remove it. I'm also not sure it's super useful for downstreams. When we were doing a research project during my undergrad that needed loop extraction, we ended up writing our own utilities to do this for reasons that I cannot remember exactly. Reviewers: artagnon, nikic Pull Request: #214252
The comment was introduced originally in 55c5181. Since that time, split DWARF is no longer a proposal and is officially a part of the standard, so update the comment.
Follow-up to #208348 which aimed to handle decl attributes on deserialization the same way as during parsing. Turned out during parsing we don't merge attributes for namespace redeclarations.
…on ops (#213638) Currently, TMA S2G reduction intrinsics use reduction operation in the name. Now that we have pretty-printing and a range-based verifier (for ImmArgs) available, this PR migrates the reduction operation to an immediate flag argument. This simplifies adding Rubin architecture extensions to this family, while also reducing the number of intrinsics from 64 to 8.
#199437) Resolves the TODO in VPlan::getVectorLoopRegion() with a mutable cache on VPlan, shared by both overloads. Measured on an O3 build of the LLVM test suite (~12k TUs): 3,556,267 hits / 126,196 misses (96.57% hit rate).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
See Commits and Changes for more details.
Created by
pull[bot] (v2.0.0-alpha.4)
Can you help keep this open source service alive? 💖 Please sponsor : )