================
@@ -0,0 +1,29 @@
+; 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:       movq    leaf_function@GOTPCREL(%rip), %rdi
----------------
pasko wrote:

Yeah, I was also thinking that the use of a particular relocation makes it more 
brittle. I think it is nice to check that func_exit is used without an argument 
(unlike `__cyg_profile_func_enter_bare`). This can be done with the 
`CHECK-NEXT` on the line that follows. Though I did not notice this kind of 
parameter passing is already checked in 
`llvm/test/Transforms/EntryExitInstrumenter/mcount.ll`, hence now I am not sure 
how much value there is in this check.

I would not probably regret removing the line, but I'd like to try one more 
thing:
```
; CHECK:       {{.*}} %rdi
; CHECK-NEXT:  callq  __cyg_profile_func_exit
```

Will it blend?

https://github.com/llvm/llvm-project/pull/92171
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to