# RUN: llc --mtriple=loongarch64 --filetype=obj %s -o - | \ # RUN: llvm-objdump -d - | FileCheck %s # REQUIRES: asserts ## Check that bl can get fixupkind correctly, whether BL contains ## target-flags(loongarch-call) or not. --- | target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n64-S128" target triple = "loongarch64" define dso_local void @test_bl_fixupkind_with_flag() { ; CHECK-LABEL: test_bl_fixupkind_with_flag ; CHECK: addi.d $sp, $sp, -16 ; CHECK-NEXT: st.d $ra, $sp, 8 ; CHECK-NEXT: bl 0 ; CHECK-NEXT: ld.d $ra, $sp, 8 ; CHECK-NEXT: addi.d $sp, $sp, 16 ; CHECK-NEXT: ret entry: call void @foo() ret void } define dso_local void @test_bl_fixupkind_without_flag() { ; CHECK-LABEL: test_bl_fixupkind_without_flag ; CHECK: addi.d $sp, $sp, -16 ; CHECK-NEXT: st.d $ra, $sp, 8 ; CHECK-NEXT: bl 0 ; CHECK-NEXT: ld.d $ra, $sp, 8 ; CHECK-NEXT: addi.d $sp, $sp, 16 ; CHECK-NEXT: ret entry: call void @foo() ret void } declare dso_local void @foo(...) ... --- name: test_bl_fixupkind_with_flag tracksRegLiveness: true body: | bb.0.entry: ADJCALLSTACKDOWN 0, 0, implicit-def dead $r3, implicit $r3 BL target-flags(loongarch-call) @foo, csr_ilp32d_lp64d, implicit-def $r1, implicit-def dead $r1, implicit-def $r3 ADJCALLSTACKUP 0, 0, implicit-def dead $r3, implicit $r3 PseudoRET ... --- name: test_bl_fixupkind_without_flag tracksRegLiveness: true body: | bb.0.entry: ADJCALLSTACKDOWN 0, 0, implicit-def dead $r3, implicit $r3 BL @foo, csr_ilp32d_lp64d, implicit-def $r1, implicit-def dead $r1, implicit-def $r3 ADJCALLSTACKUP 0, 0, implicit-def dead $r3, implicit $r3 PseudoRET ...