diff options
| author | gingerBill <bill@gingerbill.org> | 2024-01-07 21:34:44 +0000 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2024-01-07 21:34:44 +0000 |
| commit | f4782157d3b586a88983d3b770c2c0eeb17946d1 (patch) | |
| tree | e8d8d7ded61d6fb5e1f4aff6464657b68cacd6d8 /src/llvm_backend_proc.cpp | |
| parent | aff8f06e3cb1bdb9c3ffee98a68675c843df78fd (diff) | |
Implement instrumentation pass
Diffstat (limited to 'src/llvm_backend_proc.cpp')
| -rw-r--r-- | src/llvm_backend_proc.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/llvm_backend_proc.cpp b/src/llvm_backend_proc.cpp index d4eae84bc..09bebd0cf 100644 --- a/src/llvm_backend_proc.cpp +++ b/src/llvm_backend_proc.cpp @@ -329,6 +329,18 @@ gb_internal lbProcedure *lb_create_procedure(lbModule *m, Entity *entity, bool i } } + if (p->body && entity->Procedure.has_instrumentation) { + Entity *instrumentation_enter = m->info->instrumentation_enter_entity; + Entity *instrumentation_exit = m->info->instrumentation_exit_entity; + if (instrumentation_enter && instrumentation_exit) { + String enter = lb_get_entity_name(m, instrumentation_enter); + String exit = lb_get_entity_name(m, instrumentation_exit); + + lb_add_attribute_to_proc_with_string(m, p->value, make_string_c("instrument-function-entry"), enter); + lb_add_attribute_to_proc_with_string(m, p->value, make_string_c("instrument-function-exit"), exit); + } + } + lbValue proc_value = {p->value, p->type}; lb_add_entity(m, entity, proc_value); lb_add_member(m, p->name, proc_value); |