1;; RUN: llc --mattr=+v8.3a %s -o - | FileCheck %s 2target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128" 3target triple = "aarch64-unknown-linux" 4 5@__llvm_gcov_ctr = internal global [1 x i64] zeroinitializer 6@0 = private unnamed_addr constant [7 x i8] c"m.gcda\00", align 1 7@llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 0, ptr @__llvm_gcov_init, ptr null }] 8 9define dso_local i32 @f() local_unnamed_addr #0 { 10entry: 11 ret i32 0 12} 13;; CHECK-LABEL: f: 14;; CHECK: pacibsp 15 16declare void @llvm_gcda_start_file(ptr, i32, i32) local_unnamed_addr 17 18declare void @llvm_gcda_emit_function(i32, i32, i32) local_unnamed_addr 19 20declare void @llvm_gcda_emit_arcs(i32, ptr) local_unnamed_addr 21 22declare void @llvm_gcda_summary_info() local_unnamed_addr 23 24declare void @llvm_gcda_end_file() local_unnamed_addr 25 26define internal void @__llvm_gcov_writeout() unnamed_addr #1 { 27entry: 28 tail call void @llvm_gcda_start_file(ptr @0, i32 875575338, i32 0) 29 tail call void @llvm_gcda_emit_function(i32 0, i32 0, i32 0) 30 tail call void @llvm_gcda_emit_arcs(i32 1, ptr @__llvm_gcov_ctr) 31 tail call void @llvm_gcda_summary_info() 32 tail call void @llvm_gcda_end_file() 33 ret void 34} 35;; CHECK-LABEL: __llvm_gcov_writeout: 36;; CHECK: .cfi_b_key_frame 37;; CHECK-NEXT: .cfi_negate_ra_state 38;; CHECK-NEXT: pacibsp 39 40define internal void @__llvm_gcov_reset() unnamed_addr #2 { 41entry: 42 store i64 0, ptr @__llvm_gcov_ctr, align 8 43 ret void 44} 45;; CHECK-LABEL: __llvm_gcov_reset: 46;; CHECK: pacibsp 47 48declare void @llvm_gcov_init(ptr, ptr) local_unnamed_addr 49 50define internal void @__llvm_gcov_init() unnamed_addr #1 { 51entry: 52 tail call void @llvm_gcov_init(ptr nonnull @__llvm_gcov_writeout, ptr nonnull @__llvm_gcov_reset) 53 ret void 54} 55;; CHECK-LABEL: __llvm_gcov_init: 56;; CHECK: .cfi_b_key_frame 57;; CHECK-NEXT: .cfi_negate_ra_state 58;; CHECK-NOT: .cfi_ 59;; CHECK-NEXT: pacibsp 60;; CHECK: .cfi_endproc 61 62attributes #0 = { norecurse nounwind readnone "sign-return-address"="all" "sign-return-address-key"="b_key" } 63attributes #1 = { noinline "sign-return-address"="all" "sign-return-address-key"="b_key" } 64attributes #2 = { nofree noinline norecurse nounwind writeonly "sign-return-address"="all" "sign-return-address-key"="b_key" } 65 66!llvm.module.flags = !{!0, !1} 67 68!0 = !{i32 2, !"Debug Info Version", i32 3} 69!1 = !{i32 1, !"wchar_size", i32 4} 70