47 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			LLVM
		
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			LLVM
		
	
	
	
| ; 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" }
 |