1 ; RUN: opt -ee-instrument < %s | opt -inline | llc | FileCheck %s 2 3 ; The run-line mimics how Clang might run the instrumentation passes. 4 5 target datalayout = "E-m:e-i64:64-n32:64" 6 target triple = "powerpc64-bgq-linux" 7 8 9 define void @leaf_function() #0 { 10 entry: 11 ret void 12 13 ; CHECK-LABEL: leaf_function: 14 ; CHECK: bl mcount 15 ; CHECK-NOT: bl 16 ; CHECK: bl __cyg_profile_func_enter 17 ; CHECK-NOT: bl 18 ; CHECK: bl __cyg_profile_func_exit 19 ; CHECK-NOT: bl 20 ; CHECK: blr 21 } 22 23 24 define void @root_function() #0 { 25 entry: 26 call void @leaf_function() 27 ret void 28 29 ; CHECK-LABEL: root_function: 30 ; CHECK: bl mcount 31 ; CHECK-NOT: bl 32 ; CHECK: bl __cyg_profile_func_enter 33 ; CHECK-NOT: bl 34 35 ; Entry and exit calls, inlined from @leaf_function() 36 ; CHECK: bl __cyg_profile_func_enter 37 ; CHECK-NOT: bl 38 ; CHECK: bl __cyg_profile_func_exit 39 ; CHECK-NOT: bl 40 41 ; CHECK: bl __cyg_profile_func_exit 42 ; CHECK-NOT: bl 43 ; CHECK: blr 44 } 45 46 attributes #0 = { "instrument-function-entry-inlined"="mcount" "instrument-function-entry"="__cyg_profile_func_enter" "instrument-function-exit"="__cyg_profile_func_exit" } 47