Use the query that doesn't assert if TracksLiveness isn't set, which needs to always be available. We also need to start printing liveins regardless of TracksLiveness.
67 lines
2.3 KiB
YAML
67 lines
2.3 KiB
YAML
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
|
# RUN: llc -march=riscv64 -debugify-and-strip-all-safe -run-pass machine-sink %s -o - 2>&1 | FileCheck %s
|
|
|
|
--- |
|
|
define void @sink_addi_fi(i32 %0) !dbg !5 {
|
|
bb.0:
|
|
%1 = alloca i32, align 4
|
|
call void @llvm.dbg.value(metadata i32* %1, metadata !1, metadata !DIExpression()), !dbg !3
|
|
%2 = icmp eq i32 %0, 0
|
|
br i1 %2, label %bb.2, label %bb.1
|
|
bb.1:
|
|
store volatile i32 0, i32* %1, align 4
|
|
br label %bb.2
|
|
bb.2:
|
|
ret void
|
|
}
|
|
|
|
declare void @llvm.dbg.value(metadata, metadata, metadata)
|
|
|
|
!llvm.dbg.cu = !{!0}
|
|
|
|
!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !4)
|
|
!1 = !DILocalVariable(name: "var", scope: !5, file: !4, line: 2, type: !2)
|
|
!2 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned)
|
|
!3 = !DILocation(line: 0, scope: !5)
|
|
!4 = !DIFile(filename: "test.c", directory: "")
|
|
!5 = distinct !DISubprogram(name: "sink_addi_fi", scope: !4, file: !4, line: 1, type: !6, scopeLine: 1, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !8)
|
|
!6 = !DISubroutineType(types: !7)
|
|
!7 = !{null, !2}
|
|
!8 = !{}
|
|
|
|
...
|
|
---
|
|
name: sink_addi_fi
|
|
liveins:
|
|
- { reg: '$x10', virtual-reg: '%0' }
|
|
stack:
|
|
- { id: 0, offset: 0, size: 4, alignment: 4 }
|
|
body: |
|
|
; CHECK-LABEL: name: sink_addi_fi
|
|
; CHECK: bb.0:
|
|
; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)
|
|
; CHECK-NEXT: liveins: $x10
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
|
|
; CHECK-NEXT: BEQ killed [[COPY]], $x0, %bb.2
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: bb.1:
|
|
; CHECK-NEXT: successors: %bb.2(0x80000000)
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: [[ADDI:%[0-9]+]]:gpr = ADDI %stack.0, 0
|
|
; CHECK-NEXT: SW $x0, killed [[ADDI]], 0 :: (volatile store (s32) into %stack.0)
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: bb.2:
|
|
; CHECK-NEXT: PseudoRET
|
|
bb.0:
|
|
liveins: $x10
|
|
%0:gpr = COPY $x10
|
|
DBG_VALUE %stack.0, $noreg, !1, !DIExpression(), debug-location !3
|
|
%1:gpr = ADDI %stack.0, 0
|
|
DBG_VALUE %1, $noreg, !1, !DIExpression(DW_OP_plus_uconst, 0, DW_OP_stack_value), debug-location !3
|
|
BEQ killed %0:gpr, $x0, %bb.2
|
|
bb.1:
|
|
SW $x0, killed %1:gpr, 0 :: (volatile store (s32) into %stack.0, align 4)
|
|
bb.2:
|
|
PseudoRET
|