| ; RUN: llc -mtriple=x86_64-- -O0 < %s | FileCheck %s | |
| ; RUN: llc -mtriple=x86_64-- -O1 < %s | FileCheck %s | |
| ; RUN: llc -mtriple=x86_64-- -O2 < %s | FileCheck %s | |
| ; The codegen should insert post-inlining instrumentation calls and should not | |
| ; insert pre-inlining instrumentation. | |
| ; CHECK-NOT: callq __cyg_profile_func_enter | |
| define void @leaf_function() #0 { | |
| ; CHECK-LABEL: leaf_function: | |
| ; CHECK: callq __cyg_profile_func_enter_bare | |
| ; CHECK: callq __cyg_profile_func_exit | |
| ret void | |
| } | |
| define void @root_function() #0 { | |
| entry: | |
| ; CHECK-LABEL: root_function: | |
| ; CHECK: callq __cyg_profile_func_enter_bare | |
| ; CHECK-NEXT: callq leaf_function | |
| ; CHECK: callq __cyg_profile_func_exit | |
| call void @leaf_function() | |
| ret void | |
| } | |
| attributes #0 = { "instrument-function-entry"="__cyg_profile_func_enter" "instrument-function-entry-inlined"="__cyg_profile_func_enter_bare" "instrument-function-exit-inlined"="__cyg_profile_func_exit" } |