| ; RUN: opt -ee-instrument < %s | opt -inline | llc | FileCheck %s |
| |
| ; The run-line mimics how Clang might run the instrumentation passes. |
| |
| target datalayout = "E-m:e-i64:64-n32:64" |
| target triple = "powerpc64-bgq-linux" |
| |
| |
| define void @leaf_function() #0 { |
| entry: |
| ret void |
| |
| ; CHECK-LABEL: leaf_function: |
| ; CHECK: bl mcount |
| ; CHECK-NOT: bl |
| ; CHECK: bl __cyg_profile_func_enter |
| ; CHECK-NOT: bl |
| ; CHECK: bl __cyg_profile_func_exit |
| ; CHECK-NOT: bl |
| ; CHECK: blr |
| } |
| |
| |
| define void @root_function() #0 { |
| entry: |
| call void @leaf_function() |
| ret void |
| |
| ; CHECK-LABEL: root_function: |
| ; CHECK: bl mcount |
| ; CHECK-NOT: bl |
| ; CHECK: bl __cyg_profile_func_enter |
| ; CHECK-NOT: bl |
| |
| ; Entry and exit calls, inlined from @leaf_function() |
| ; CHECK: bl __cyg_profile_func_enter |
| ; CHECK-NOT: bl |
| ; CHECK: bl __cyg_profile_func_exit |
| ; CHECK-NOT: bl |
| |
| ; CHECK: bl __cyg_profile_func_exit |
| ; CHECK-NOT: bl |
| ; CHECK: blr |
| } |
| |
| attributes #0 = { "instrument-function-entry-inlined"="mcount" "instrument-function-entry"="__cyg_profile_func_enter" "instrument-function-exit"="__cyg_profile_func_exit" } |