mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-28 22:29:56 +00:00
When truncated vector stores were being custom lowered in VectorLegalizer::LegalizeOp(), the old (illegal) and new (legal) node pair was not being added to LegalizedNodes list. Instead of the legalized result being passed to VectorLegalizer::TranslateLegalizeResult(), the result was being passed back into VectorLegalizer::LegalizeOp(), which ended up adding a (new, new) pair to the list instead. This was causing an assertion failure when a custom lowered truncated vector store was the last instruction a basic block and the VectorLegalizer was unable to find it in the LegalizedNodes list when updating the DAG root. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188953 91177308-0d34-0410-b5e6-96231b3b80d8
21 lines
560 B
LLVM
21 lines
560 B
LLVM
; RUN: llc < %s -march=r600 -mcpu=redwood | FileCheck %s
|
|
|
|
; This tests for a bug in the SelectionDAG where custom lowered truncated
|
|
; vector stores at the end of a basic block were not being added to the
|
|
; LegalizedNodes list, which triggered an assertion failure.
|
|
|
|
; CHECK-LABEL: @test
|
|
; CHECK: MEM_RAT_CACHELESS STORE_RAW
|
|
define void @test(<4 x i8> addrspace(1)* %out, i32 %cond, <4 x i8> %in) {
|
|
entry:
|
|
%0 = icmp eq i32 %cond, 0
|
|
br i1 %0, label %if, label %done
|
|
|
|
if:
|
|
store <4 x i8> %in, <4 x i8> addrspace(1)* %out
|
|
br label %done
|
|
|
|
done:
|
|
ret void
|
|
}
|