76 lines · plain
1# RUN: llc -mtriple=x86_64-unknown-linux -start-before=x86-flags-copy-lowering -o - %s | FileCheck %s2#3# Test the emission of pre- and post-instruction labels.4 5--- |6 declare void @f(i32 %x) nounwind7 8 declare void @g(i32 %x) nounwind9 10 declare void @h(i32 %x) nounwind11 12 define i64 @test(i32 %x) nounwind {13 entry:14 call void @f(i32 %x)15 call void @g(i32 %x)16 call void @h(i32 %x)17 ret i64 undef18 }19 20...21---22name: test23# CHECK-LABEL: {{^}}test:24tracksRegLiveness: true25frameInfo:26 adjustsStack: true27 hasCalls: true28body: |29 bb.0.entry:30 liveins: $edi31 32 %0:gr32 = COPY $edi33 %1:gr32 = COPY killed %034 ADJCALLSTACKDOWN64 0, 0, 0, implicit-def $rsp, implicit-def $eflags, implicit-def $ssp, implicit $rsp, implicit $ssp35 $edi = COPY %136 37 CALL64pcrel32 @f, csr_64, implicit $rsp, implicit $ssp, implicit $edi, pre-instr-symbol <mcsymbol .Lpre_f>, post-instr-symbol <mcsymbol .Lpost_f>38 ; CHECK: .Lpre_f:39 ; CHECK-NEXT: callq f40 ; CHECK-NEXT: .Lpost_f:41 42 ADJCALLSTACKUP64 0, 0, implicit-def $rsp, implicit-def $eflags, implicit-def $ssp, implicit $rsp, implicit $ssp43 ADJCALLSTACKDOWN64 0, 0, 0, implicit-def $rsp, implicit-def $eflags, implicit-def $ssp, implicit $rsp, implicit $ssp44 $edi = COPY %145 46 CALL64pcrel32 @g, csr_64, implicit $rsp, implicit $ssp, implicit $edi, pre-instr-symbol <mcsymbol .Lpre_g>47 ; CHECK: .Lpre_g:48 ; CHECK-NEXT: callq g49 50 ADJCALLSTACKUP64 0, 0, implicit-def $rsp, implicit-def $eflags, implicit-def $ssp, implicit $rsp, implicit $ssp51 ADJCALLSTACKDOWN64 0, 0, 0, implicit-def $rsp, implicit-def $eflags, implicit-def $ssp, implicit $rsp, implicit $ssp52 $edi = COPY %153 54 CALL64pcrel32 @h, csr_64, implicit $rsp, implicit $ssp, implicit $edi, post-instr-symbol <mcsymbol .Lpost_h>55 ; CHECK: callq h56 ; CHECK-NEXT: .Lpost_h:57 58 ADJCALLSTACKUP64 0, 0, implicit-def $rsp, implicit-def $eflags, implicit-def $ssp, implicit $rsp, implicit $ssp59 60 %2:gr64 = MOV64ri32 <mcsymbol .Lpre_f>61 %3:gr64 = MOV64ri32 <mcsymbol .Lpost_f>62 %4:gr64 = MOV64ri32 <mcsymbol .Lpre_g>63 %5:gr64 = MOV64ri32 <mcsymbol .Lpost_h>64 ; CHECK: movq $.Lpre_f, %{{.*}}65 ; CHECK-NEXT: movq $.Lpost_f, %{{.*}}66 ; CHECK-NEXT: movq $.Lpre_g, %{{.*}}67 ; CHECK-NEXT: movq $.Lpost_h, %{{.*}}68 69 %6:gr64 = ADD64rr killed %2, killed %3, implicit-def $eflags70 %7:gr64 = ADD64rr killed %4, killed %5, implicit-def $eflags71 %8:gr64 = ADD64rr killed %6, killed %7, implicit-def $eflags72 $rax = COPY %873 RET64 implicit $rax74 75...76