Craig Topper 846fbb06b8 [DAGCombiner][RISCV] Return SDValue(N, 0) instead of SDValue() after 2 calls to CombineTo in visitSTORE.
RISC-V found a case where the CombineTo caused N to be CSEd with
an existing node and then deleted. The top level DAGCombiner loop
was surprised to find a node was deleted, but SDValue() was returned
from the visit function.

We need to return SDValue(N, 0) to tell the top level loop that
a change was made, but the worklist updates were already handled.

Fixes #64772.

Reviewed By: arsenm

Differential Revision: https://reviews.llvm.org/D158208
2023-08-17 15:13:36 -07:00

18 lines
544 B
LLVM

; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2
; RUN: llc < %s -mtriple=riscv64 | FileCheck %s
define void @f() {
; CHECK-LABEL: f:
; CHECK: # %bb.0:
; CHECK-NEXT: sb zero, 0(zero)
; CHECK-NEXT: ret
%B1 = shl i64 -9223372036854775808, 0
%LGV6 = load i8, ptr null, align 1
%G3 = getelementptr i32, ptr null, i64 %B1
%B5 = ashr i64 -9223372036854775808, 0
store i1 false, ptr %G3, align 1
store i8 1, ptr null, align 1
store i1 false, ptr null, align 1
ret void
}