[CodeGen][SplitKit] Fix a crash in addDeadDef (#197014) This commit fixes https://github.com/llvm/llvm-project/issues/178867. The problem was that we were trying to materialize a lanemask that does not existing in the parent live-interval and were crashing. This happened because we were using the original live-interval to materialize the live subranges (original is the ancestor of the parent and may cover some lanes in the lanemasks that are not covered by the parent live-interval). The crash was reported by a downstream user and they were not able to capture the issue with an upstream target. The issue appears because of the refining of the subranges. We are creating values out of thin air but they may cover more lanes than the parent because we infer them from the original live-range. The fix consists in taking the lanes covered by the parent, not the original value, when creating the live-interval for the children.
Welcome to the LLVM project!
This repository contains the source code for LLVM, a toolkit for the construction of highly optimized compilers, optimizers, and run-time environments.
The LLVM project has multiple components. The core of the project is itself called “LLVM”. This contains all of the tools, libraries, and header files needed to process intermediate representations and convert them into object files. Tools include an assembler, disassembler, bitcode analyzer, and bitcode optimizer.
C-like languages use the Clang frontend. This component compiles C, C++, Objective-C, and Objective-C++ code into LLVM bitcode -- and from there into object files, using LLVM.
Other components include: the libc++ C++ standard library, the LLD linker, and more.
Consult the Getting Started with LLVM page for information on building and running LLVM.
For information on how to contribute to the LLVM project, please take a look at the Contributing to LLVM guide.
Join the LLVM Discourse forums, Discord chat, LLVM Office Hours or Regular sync-ups.
The LLVM project has adopted a code of conduct for participants to all modes of communication within the project.