]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/CodeGen/AArch64/machine-dead-copy.mir
Vendor import of llvm release_40 branch r293443:
[FreeBSD/FreeBSD.git] / test / CodeGen / AArch64 / machine-dead-copy.mir
1
2 # RUN: llc -mtriple=aarch64-none-linux-gnu -run-pass machine-cp  -verify-machineinstrs  -o - %s | FileCheck %s
3
4 --- |
5   define i32 @copyprop1(i32 %a, i32 %b) { ret i32 %a }
6   define i32 @copyprop2(i32 %a, i32 %b) { ret i32 %a }
7   define i32 @copyprop3(i32 %a, i32 %b) { ret i32 %a }
8   define i32 @copyprop4(i32 %a, i32 %b) { ret i32 %a }
9   declare i32 @foo(i32)
10 ...
11 ---
12 # The first copy is dead copy which is not used.
13 # CHECK-LABEL: name: copyprop1
14 # CHECK: bb.0:
15 # CHECK-NOT: %w20 = COPY
16 name: copyprop1
17 body: |
18   bb.0:
19     liveins: %w0,  %w1
20     %w20 = COPY %w1
21     BL @foo, csr_aarch64_aapcs, implicit %w0, implicit-def %w0
22     RET_ReallyLR implicit %w0
23 ...
24 ---
25 # The first copy is not a dead copy which is used in the second copy after the
26 # call.
27 # CHECK-LABEL: name: copyprop2
28 # CHECK: bb.0:
29 # CHECK: %w20 = COPY
30 name: copyprop2
31 body: |
32   bb.0:
33     liveins: %w0,  %w1
34     %w20 = COPY %w1
35     BL @foo, csr_aarch64_aapcs, implicit %w0, implicit-def %w0
36     %w0 = COPY %w20
37     RET_ReallyLR implicit %w0
38 ...
39 ---
40 # Both the first and second copy are dead copies which are not used.
41 # CHECK-LABEL: name: copyprop3
42 # CHECK: bb.0:
43 # CHECK-NOT: COPY
44 name: copyprop3
45 body: |
46   bb.0:
47     liveins: %w0,  %w1
48     %w20 = COPY %w1
49     BL @foo, csr_aarch64_aapcs, implicit %w0, implicit-def %w0
50     %w20 = COPY %w0
51     RET_ReallyLR implicit %w0
52 ...
53 # The second copy is removed as a NOP copy, after then the first copy become
54 # dead which should be removed as well.
55 # CHECK-LABEL: name: copyprop4
56 # CHECK: bb.0:
57 # CHECK-NOT: COPY
58 name: copyprop4
59 body: |
60   bb.0:
61     liveins: %w0,  %w1
62     %w20 = COPY %w0
63     %w0 = COPY %w20
64     BL @foo, csr_aarch64_aapcs, implicit %w0, implicit-def %w0
65     RET_ReallyLR implicit %w0
66 ...
67