Home | History | Annotate | Download | only in PowerPC
      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