|
295 | 295 | // CHECK-NEXT: end |
296 | 296 | // CHECK-NEXT: ] |
297 | 297 | // CHECK-NEXT: } |
| 298 | +// CHECK-NEXT: RuntimeFunction { |
| 299 | +// CHECK-NEXT: Function: func19 |
| 300 | +// CHECK-NEXT: Fragment: No |
| 301 | +// CHECK-NEXT: FunctionLength: 32 |
| 302 | +// CHECK-NEXT: RegF: 0 |
| 303 | +// CHECK-NEXT: RegI: 1 |
| 304 | +// CHECK-NEXT: HomedParameters: No |
| 305 | +// CHECK-NEXT: CR: 1 |
| 306 | +// CHECK-NEXT: FrameSize: 80 |
| 307 | +// CHECK-NEXT: Prologue [ |
| 308 | +// CHECK-NEXT: sub sp, sp, #64 |
| 309 | +// CHECK-NEXT: stp x19, lr, [sp] |
| 310 | +// CHECK-NEXT: sub sp, sp, #16 |
| 311 | +// CHECK-NEXT: end |
| 312 | +// CHECK-NEXT: ] |
| 313 | +// CHECK-NEXT: } |
| 314 | +// CHECK-NEXT: RuntimeFunction { |
| 315 | +// CHECK-NEXT: Function: notpacked_func20 |
| 316 | +// CHECK-NEXT: ExceptionRecord: |
| 317 | +// CHECK-NEXT: ExceptionData { |
298 | 318 | // CHECK: RuntimeFunction { |
299 | 319 | // CHECK-NEXT: Function: nonpacked1 |
300 | 320 | // CHECK-NEXT: ExceptionRecord: |
|
374 | 394 | // CHECK-NEXT: Function: nonpacked16 |
375 | 395 | // CHECK-NEXT: ExceptionRecord: |
376 | 396 | // CHECK-NEXT: ExceptionData { |
| 397 | +// CHECK: EpiloguePacked: Yes |
| 398 | +// CHECK: RuntimeFunction { |
| 399 | +// CHECK-NEXT: Function: nonpacked17 |
| 400 | +// CHECK-NEXT: ExceptionRecord: |
| 401 | +// CHECK-NEXT: ExceptionData { |
377 | 402 | // CHECK: EpiloguePacked: Yes |
378 | 403 |
|
379 | 404 |
|
@@ -809,6 +834,59 @@ func18: |
809 | 834 | ret |
810 | 835 | .seh_endproc |
811 | 836 |
|
| 837 | +func19: |
| 838 | + .seh_proc func19 |
| 839 | + sub sp, sp, #16 |
| 840 | + .seh_stackalloc 16 |
| 841 | + stp x19, lr, [sp] |
| 842 | + .seh_save_lrpair x19, 0 |
| 843 | + sub sp, sp, #64 |
| 844 | + .seh_stackalloc 64 |
| 845 | + .seh_endprologue |
| 846 | + nop |
| 847 | + .seh_startepilogue |
| 848 | + add sp, sp, #64 |
| 849 | + .seh_stackalloc 64 |
| 850 | + ldp x19, lr, [sp] |
| 851 | + .seh_save_lrpair x19, 0 |
| 852 | + add sp, sp, #16 |
| 853 | + .seh_stackalloc 16 |
| 854 | + .seh_endepilogue |
| 855 | + ret |
| 856 | + .seh_endproc |
| 857 | + |
| 858 | +notpacked_func20: |
| 859 | + // This function is expressible with packed unwind info, but older |
| 860 | + // versions of Windows unwind cases with CR=01, RegI=1, RegF>0 |
| 861 | + // incorrectly; therefore, we choose not to pack this case. |
| 862 | + .seh_proc notpacked_func20 |
| 863 | + sub sp, sp, #48 |
| 864 | + .seh_stackalloc 48 |
| 865 | + stp x19, lr, [sp] |
| 866 | + .seh_save_lrpair x19, 0 |
| 867 | + stp d8, d9, [sp, #16] |
| 868 | + .seh_save_fregp d8, 16 |
| 869 | + str d10, [sp, #32] |
| 870 | + .seh_save_freg d10, 32 |
| 871 | + sub sp, sp, #64 |
| 872 | + .seh_stackalloc 64 |
| 873 | + .seh_endprologue |
| 874 | + nop |
| 875 | + .seh_startepilogue |
| 876 | + add sp, sp, #64 |
| 877 | + .seh_stackalloc 64 |
| 878 | + ldr d10, [sp, #32] |
| 879 | + .seh_save_freg d10, 32 |
| 880 | + ldp d8, d9, [sp, #16] |
| 881 | + .seh_save_fregp d8, 16 |
| 882 | + ldp x19, lr, [sp] |
| 883 | + .seh_save_lrpair x19, 0 |
| 884 | + add sp, sp, #48 |
| 885 | + .seh_stackalloc 48 |
| 886 | + .seh_endepilogue |
| 887 | + ret |
| 888 | + .seh_endproc |
| 889 | + |
812 | 890 | nonpacked1: |
813 | 891 | .seh_proc nonpacked1 |
814 | 892 | // Can't be packed; can't save integer registers after float registers. |
@@ -1157,3 +1235,34 @@ nonpacked16: |
1157 | 1235 | .seh_endepilogue |
1158 | 1236 | br x9 |
1159 | 1237 | .seh_endproc |
| 1238 | + |
| 1239 | +nonpacked17: |
| 1240 | + .seh_proc nonpacked17 |
| 1241 | + // Can't be packed; more predecrement for SavSZ than used for |
| 1242 | + // corresponding RegI/RegF/LR saves |
| 1243 | + sub sp, sp, #64 |
| 1244 | + .seh_stackalloc 64 |
| 1245 | + stp x19, lr, [sp] |
| 1246 | + .seh_save_lrpair x19, 0 |
| 1247 | + stp d8, d9, [sp, #16] |
| 1248 | + .seh_save_fregp d8, 16 |
| 1249 | + str d10, [sp, #32] |
| 1250 | + .seh_save_freg d10, 32 |
| 1251 | + sub sp, sp, #64 |
| 1252 | + .seh_stackalloc 64 |
| 1253 | + .seh_endprologue |
| 1254 | + nop |
| 1255 | + .seh_startepilogue |
| 1256 | + add sp, sp, #64 |
| 1257 | + .seh_stackalloc 64 |
| 1258 | + ldr d10, [sp, #32] |
| 1259 | + .seh_save_freg d10, 32 |
| 1260 | + ldp d8, d9, [sp, #16] |
| 1261 | + .seh_save_fregp d8, 16 |
| 1262 | + ldp x19, lr, [sp] |
| 1263 | + .seh_save_lrpair x19, 0 |
| 1264 | + add sp, sp, #64 |
| 1265 | + .seh_stackalloc 64 |
| 1266 | + .seh_endepilogue |
| 1267 | + ret |
| 1268 | + .seh_endproc |
0 commit comments