[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / AArch64 / machine-sink-getmemoperandwithoffset.mir
blob3a21333a2b570e8f2301429817848d5b3d9569c0
1 # RUN: llc -mtriple=aarch64-none-linux-gnu -run-pass machine-sink -o - %s | FileCheck %s
2 --- |
3   define i8 @g() {
4   else.7:
5     br i1 undef, label %then.8, label %else.8, !make.implicit !0
7   then.8:                                           ; preds = %else.8, %else.7
8     %merge = phi i8 [ 1, %else.7 ], [ 0, %else.8 ]
9     ret i8 %merge ;1 ;%merge
11   else.8:                                           ; preds = %else.7
12     %icmp.8 = icmp eq i64 undef, undef
13   ;  ret i8 0 ; added
14     br i1 %icmp.8, label %else.11, label %then.8
16   else.11:                                          ; preds = %else.8
17     ret i8 undef
18   }
20   !0 = !{}
21 ...
22 ---
23 name:            g
24 tracksRegLiveness: true
25 registers:
26   - { id: 0, class: gpr32all }
27   - { id: 1, class: gpr32all }
28   - { id: 2, class: gpr32 }
29   - { id: 3, class: gpr32 }
30   - { id: 4, class: gpr32all }
31   - { id: 5, class: gpr32 }
32   - { id: 6, class: gpr32all }
33 body:             |
34   ; Just check that the pass didn't crash/assert.
35   ; CHECK-LABEL: name: g
36   bb.0.else.7:
37     successors: %bb.1, %bb.2
39     %2:gpr32 = MOVi32imm 1
40   ; Sinking the below COPY instruction caused an assert to trigger before
41   ; requiring getMemOperandWithOffset to return false rather than assert
42   ; when handling non-memory operations.
43     %1:gpr32all = COPY %2
44     %3:gpr32 = COPY $wzr
45     CBNZW %3, %bb.2
46     B %bb.1
48   bb.1.then.8:
49     %0:gpr32all = PHI %1, %bb.0, %4, %bb.2
50     $w0 = COPY %0
51     RET_ReallyLR implicit $w0
53   bb.2.else.8:
54     successors: %bb.3, %bb.1
56     %5:gpr32 = COPY $wzr
57     %4:gpr32all = COPY %5
58     CBNZW %5, %bb.1
59     B %bb.3
61   bb.3.else.11:
62     %6:gpr32all = IMPLICIT_DEF
63     $w0 = COPY %6
64     RET_ReallyLR implicit $w0
65 ...