1212 .type simple , @function
1313simple:
1414 paciasp
15+ stp x29 , x30 , [ sp , # - 0x10 ] !
1516 b 1f
16171 :
18+ autiza x0
19+ blr x0
20+ ldp x29 , x30 , [ sp ], # 0x10
1721 autiasp
1822 ret
1923 .size simple , . - simple
@@ -25,29 +29,41 @@ simple:
2529// ...
2630// CHECK: BB Layout : [[ BB0: [ 0 - 9a - zA - Z. ]+]], [[ BB1: [ 0 - 9a - zA - Z. ]+]]
2731// CHECK - NEXT: }
28- // CHECK - NEXT: [[ BB0 ]] ( 2 instructions , align : 1 )
32+ // CHECK - NEXT: [[ BB0 ]] ( 3 instructions , align : 1 )
2933// CHECK - NEXT: Entry Point
3034// CHECK - NEXT: 00000000 : paciasp
31- // CHECK - NEXT: 00000004 : b [[ BB1 ]]
35+ // CHECK - NEXT: 00000004 : stp x29 , x30 , [ sp , # - 0x10 ] !
36+ // CHECK - NEXT: 00000008 : b [[ BB1 ]]
3237// CHECK - NEXT: Successors: [[ BB1 ]]
3338// CHECK - EMPTY:
34- // CHECK - NEXT: [[ BB1 ]] ( 2 instructions , align : 1 )
39+ // CHECK - NEXT: [[ BB1 ]] ( 5 instructions , align : 1 )
3540// CHECK - NEXT: Predecessors: [[ BB0 ]]
36- // CHECK - NEXT: 00000008 : autiasp
37- // CHECK - NEXT: 0000000c: ret
41+ // CHECK - NEXT: 0000000c: autiza x0
42+ // CHECK - NEXT: 00000010 : blr x0
43+ // CHECK - NEXT: 00000014 : ldp x29 , x30 , [ sp ], # 0x10
44+ // CHECK - NEXT: 00000018 : autiasp
45+ // CHECK - NEXT: 0000001c: ret
3846// CHECK - EMPTY:
3947// CHECK - NEXT: DWARF CFI Instructions:
4048// CHECK - NEXT: <empty>
4149// CHECK - NEXT: End of Function "simple"
4250// CHECK - EMPTY:
4351// CHECK - NEXT: PacRetAnalysis::ComputeNext( hint # 25 , pacret - state<SafeToDerefRegs: LR W30 W30_HI , Insts: >)
4452// CHECK - NEXT: .. result: (pacret - state<SafeToDerefRegs: , Insts: >)
53+ // CHECK - NEXT: PacRetAnalysis::ComputeNext( stp x29 , x30 , [ sp , # - 0x10 ] ! , pacret - state<SafeToDerefRegs: , Insts: >)
54+ // CHECK - NEXT: .. result: (pacret - state<SafeToDerefRegs: , Insts: >)
4555// CHECK - NEXT: PacRetAnalysis::ComputeNext( b [[ BB1 ]], pacret - state<SafeToDerefRegs: , Insts: >)
4656// CHECK - NEXT: .. result: (pacret - state<SafeToDerefRegs: , Insts: >)
4757// CHECK - NEXT: PacRetAnalysis::Confluence(
4858// CHECK - NEXT: State 1 : pacret - state<SafeToDerefRegs: (all) , Insts: >
4959// CHECK - NEXT: State 2 : pacret - state<SafeToDerefRegs: , Insts: >)
5060// CHECK - NEXT: merged state: pacret - state<SafeToDerefRegs: , Insts: >
61+ // CHECK - NEXT: PacRetAnalysis::ComputeNext( autiza x0 , pacret - state<SafeToDerefRegs: , Insts: >)
62+ // CHECK - NEXT: .. result: (pacret - state<SafeToDerefRegs: W0 X0 W0_HI , Insts: >)
63+ // CHECK - NEXT: PacRetAnalysis::ComputeNext( blr x0 , pacret - state<SafeToDerefRegs: W0 X0 W0_HI , Insts: >)
64+ // CHECK - NEXT: .. result: (pacret - state<SafeToDerefRegs: , Insts: >)
65+ // CHECK - NEXT: PacRetAnalysis::ComputeNext( ldp x29 , x30 , [ sp ], # 0x10 , pacret - state<SafeToDerefRegs: , Insts: >)
66+ // CHECK - NEXT: .. result: (pacret - state<SafeToDerefRegs: , Insts: >)
5167// CHECK - NEXT: PacRetAnalysis::ComputeNext( hint # 29 , pacret - state<SafeToDerefRegs: , Insts: >)
5268// CHECK - NEXT: .. result: (pacret - state<SafeToDerefRegs: LR W30 W30_HI , Insts: >)
5369// CHECK - NEXT: PacRetAnalysis::ComputeNext( ret x30 , pacret - state<SafeToDerefRegs: LR W30 W30_HI , Insts: >)
@@ -56,6 +72,12 @@ simple:
5672// CHECK - NEXT: State 1 : pacret - state<SafeToDerefRegs: , Insts: >
5773// CHECK - NEXT: State 2 : pacret - state<SafeToDerefRegs: , Insts: >)
5874// CHECK - NEXT: merged state: pacret - state<SafeToDerefRegs: , Insts: >
75+ // CHECK - NEXT: PacRetAnalysis::ComputeNext( autiza x0 , pacret - state<SafeToDerefRegs: , Insts: >)
76+ // CHECK - NEXT: .. result: (pacret - state<SafeToDerefRegs: W0 X0 W0_HI , Insts: >)
77+ // CHECK - NEXT: PacRetAnalysis::ComputeNext( blr x0 , pacret - state<SafeToDerefRegs: W0 X0 W0_HI , Insts: >)
78+ // CHECK - NEXT: .. result: (pacret - state<SafeToDerefRegs: , Insts: >)
79+ // CHECK - NEXT: PacRetAnalysis::ComputeNext( ldp x29 , x30 , [ sp ], # 0x10 , pacret - state<SafeToDerefRegs: , Insts: >)
80+ // CHECK - NEXT: .. result: (pacret - state<SafeToDerefRegs: , Insts: >)
5981// CHECK - NEXT: PacRetAnalysis::ComputeNext( hint # 29 , pacret - state<SafeToDerefRegs: , Insts: >)
6082// CHECK - NEXT: .. result: (pacret - state<SafeToDerefRegs: LR W30 W30_HI , Insts: >)
6183// CHECK - NEXT: PacRetAnalysis::ComputeNext( ret x30 , pacret - state<SafeToDerefRegs: LR W30 W30_HI , Insts: >)
@@ -67,21 +89,28 @@ simple:
6789// ...
6890// CHECK: BB Layout : [[ BB0 ]], [[ BB1 ]]
6991// CHECK - NEXT: }
70- // CHECK - NEXT: [[ BB0 ]] ( 2 instructions , align : 1 )
92+ // CHECK - NEXT: [[ BB0 ]] ( 3 instructions , align : 1 )
7193// CHECK - NEXT: Entry Point
7294// CHECK - NEXT: 00000000 : paciasp # PacRetAnalysis: pacret - state<SafeToDerefRegs: BitVector , Insts: >
73- // CHECK - NEXT: 00000004 : b [[ BB1 ]] # PacRetAnalysis: pacret - state<SafeToDerefRegs: BitVector , Insts: >
95+ // CHECK - NEXT: 00000004 : stp x29 , x30 , [ sp , # - 0x10 ] ! # PacRetAnalysis: pacret - state<SafeToDerefRegs: BitVector , Insts: >
96+ // CHECK - NEXT: 00000008 : b [[ BB1 ]] # PacRetAnalysis: pacret - state<SafeToDerefRegs: BitVector , Insts: >
7497// CHECK - NEXT: Successors: [[ BB1 ]]
7598// CHECK - EMPTY:
76- // CHECK - NEXT: [[ BB1 ]] ( 2 instructions , align : 1 )
99+ // CHECK - NEXT: [[ BB1 ]] ( 5 instructions , align : 1 )
77100// CHECK - NEXT: Predecessors: [[ BB0 ]]
78- // CHECK - NEXT: 00000008 : autiasp # PacRetAnalysis: pacret - state<SafeToDerefRegs: BitVector , Insts: >
79- // CHECK - NEXT: 0000000c: ret # PacRetAnalysis: pacret - state<SafeToDerefRegs: BitVector , Insts: >
101+ // CHECK - NEXT: 0000000c: autiza x0 # PacRetAnalysis: pacret - state<SafeToDerefRegs: BitVector , Insts: >
102+ // CHECK - NEXT: 00000010 : blr x0 # PacRetAnalysis: pacret - state<SafeToDerefRegs: BitVector , Insts: >
103+ // CHECK - NEXT: 00000014 : ldp x29 , x30 , [ sp ], # 0x10 # PacRetAnalysis: pacret - state<SafeToDerefRegs: BitVector , Insts: >
104+ // CHECK - NEXT: 00000018 : autiasp # PacRetAnalysis: pacret - state<SafeToDerefRegs: BitVector , Insts: >
105+ // CHECK - NEXT: 0000001c: ret # PacRetAnalysis: pacret - state<SafeToDerefRegs: BitVector , Insts: >
80106// CHECK - EMPTY:
81107// CHECK - NEXT: DWARF CFI Instructions:
82108// CHECK - NEXT: <empty>
83109// CHECK - NEXT: End of Function "simple"
84110// CHECK - EMPTY:
111+ // CHECK - NEXT: Found call inst: 00000000 : blr x0 # PacRetAnalysis: pacret - state<SafeToDerefRegs: BitVector , Insts: >
112+ // CHECK - NEXT: Call destination reg: X0
113+ // CHECK - NEXT: SafeToDerefRegs: W0 X0 W0_HI{{ [ \t ]* $}}
85114// CHECK - NEXT: Found RET inst: 00000000 : ret # PacRetAnalysis: pacret - state<SafeToDerefRegs: BitVector , Insts: >
86115// CHECK - NEXT: RetReg: LR
87116// CHECK - NEXT: Authenticated reg: (none)
0 commit comments