| # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6 |
| # RUN: llc -mtriple x86_64-unknown-linux-gnu -passes=post-ra-pseudos -o - %s | FileCheck %s |
| |
| # Check that we do post-RA pseudoinstruction expansion, even with optnone. |
| |
| --- | |
| declare void @foo(i32) |
| |
| ; Function Attrs: noinline optnone |
| define i32 @test() #0 { |
| call void @foo(i32 1) |
| ret i32 0 |
| } |
| |
| attributes #0 = { noinline optnone } |
| ... |
| --- |
| name: test |
| body: | |
| bb.0 (%ir-block.0): |
| ; CHECK-LABEL: name: test |
| ; CHECK: frame-setup PUSH64r undef $rax, implicit-def $rsp, implicit $rsp |
| ; CHECK-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 16 |
| ; CHECK-NEXT: renamable $edi = MOV32ri 1 |
| ; CHECK-NEXT: CALL64pcrel32 target-flags(x86-plt) @foo, csr_64, implicit $rsp, implicit $ssp, implicit $edi |
| ; CHECK-NEXT: renamable $eax = XOR32rr undef $eax, undef $eax, implicit-def dead $eflags |
| ; CHECK-NEXT: $rcx = frame-destroy POP64r implicit-def $rsp, implicit $rsp |
| ; CHECK-NEXT: frame-destroy CFI_INSTRUCTION def_cfa_offset 8 |
| ; CHECK-NEXT: RET64 implicit $eax |
| frame-setup PUSH64r undef $rax, implicit-def $rsp, implicit $rsp |
| frame-setup CFI_INSTRUCTION def_cfa_offset 16 |
| renamable $edi = MOV32ri 1 |
| CALL64pcrel32 target-flags(x86-plt) @foo, csr_64, implicit $rsp, implicit $ssp, implicit $edi |
| renamable $eax = MOV32r0 implicit-def dead $eflags |
| $rcx = frame-destroy POP64r implicit-def $rsp, implicit $rsp |
| frame-destroy CFI_INSTRUCTION def_cfa_offset 8 |
| RET64 implicit $eax |
| ... |