diff options
author | Jay Foad <jay.foad@amd.com> | 2023-09-06 12:51:44 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-06 12:51:44 +0100 |
commit | 11171d81aeafb0c2818f288900423e366a2787fc (patch) | |
tree | cd4b97e3a21d3c9b63472706e5d75d36b69c037b /llvm/lib/ProfileData/Coverage/CoverageMappingReader.cpp | |
parent | d71adebb9fb875a5fd23acdbe0cf0799092fa4ca (diff) | |
download | llvm-11171d81aeafb0c2818f288900423e366a2787fc.zip llvm-11171d81aeafb0c2818f288900423e366a2787fc.tar.gz llvm-11171d81aeafb0c2818f288900423e366a2787fc.tar.bz2 |
[AMDGPU] Cope with SelectionDAG::UpdateNodeOperands returning a different SDNode (#65340)
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.
Diffstat (limited to 'llvm/lib/ProfileData/Coverage/CoverageMappingReader.cpp')
0 files changed, 0 insertions, 0 deletions