llvm with tablegen backend for capstone disassembler
Go to file
Jay Foad 8669a9f93a
[AMDGPU] Cope with SelectionDAG::UpdateNodeOperands returning a different SDNode (#65765)
SITargetLowering::adjustWritemask calls SelectionDAG::UpdateNodeOperands
to update an EXTRACT_SUBREG node in-place to refer to a new IMAGE_LOAD
instruction, before we delete the old IMAGE_LOAD instruction. But in
UpdateNodeOperands can do CSE on the fly and return a different
EXTRACT_SUBREG node, so the original EXTRACT_SUBREG node would still
exist and would refer to the old deleted IMAGE_LOAD instruction. This
caused errors like:

t31: v3i32,ch = <<Deleted Node!>> # D:1
This target-independent node should have been selected!
UNREACHABLE executed at lib/CodeGen/SelectionDAG/InstrEmitter.cpp:1209!

Fix it by detecting the CSE case and replacing all uses of the original
EXTRACT_SUBREG node with the CSE'd one.

Recommit with a fix for a use-after-free bug in the first version of
this patch (#65340) which was caught by asan.
2023-09-08 16:16:02 +01:00
.ci
.github
bolt
clang [NFC][Clang][RISCV] Remove trailing whitespaces in riscv_vector.td (#65762) 2023-09-08 22:59:45 +08:00
clang-tools-extra
cmake
compiler-rt Revert RTSanitizerCommonSymbolizerInternal changes 2023-09-08 08:03:34 -07:00
cross-project-tests
flang
libc
libclc
libcxx
libcxxabi
libunwind
lld
lldb
llvm [AMDGPU] Cope with SelectionDAG::UpdateNodeOperands returning a different SDNode (#65765) 2023-09-08 16:16:02 +01:00
llvm-libgcc
mlir [mlir][TOSA] Fix interpretation of --tosa-validate='profile=undefined' (#65738) 2023-09-08 16:11:19 +01:00
openmp
polly
pstl
runtimes
third-party
utils
.arcconfig
.arclint
.clang-format
.clang-tidy
.git-blame-ignore-revs
.gitignore
.mailmap
CONTRIBUTING.md
LICENSE.TXT
README.md
SECURITY.md

The LLVM Compiler Infrastructure

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.

Getting the Source Code and Building LLVM

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.

Getting in touch

Join the LLVM Discourse forums, Discord chat, or #llvm IRC channel on OFTC.

The LLVM project has adopted a code of conduct for participants to all modes of communication within the project.