I am pretty confused by what llvm-lines is actually measuring. I think @nnethercote raised similar concern on internals some time ago, I just found another pretty confusing instance and I don't really understand what's going on.
I have a crate and it has two targets - one lib and one bin. bin target is simple - it doesn't actually do anything, it only calls main function from a lib.
use legacy_zebra::src::zebra::main as main_lib;
fn main () {
main_lib();
}
And yet, when I run both targets through llvm-lines, I get completely different output.
I thought this could be because the main function calls some generic function in dependencies, so if you don't call it, then those dependencies are not codegened. But the main function is actually present in both outputs (as main_0) - and more than that, it has different line count.
This is really confusing to me, and I don't really understand how to interpret the results. There's no diference between these targets but the llvm-lines output is massively different and the functions that stand out seems to be all over the place. Some are generic, some are not. Some functions from dependencies are shown, some not (some are generic, some are not).
The project is not open source, yet, so it might be difficult to interpret now. I will open source it in following weeks/months, though.
I am pretty confused by what
llvm-lines
is actually measuring. I think @nnethercote raised similar concern on internals some time ago, I just found another pretty confusing instance and I don't really understand what's going on.I have a crate and it has two targets - one
lib
and onebin
.bin
target is simple - it doesn't actually do anything, it only calls main function from alib
.And yet, when I run both targets through
llvm-lines
, I get completely different output.I thought this could be because the main function calls some generic function in dependencies, so if you don't call it, then those dependencies are not codegened. But the main function is actually present in both outputs (as
main_0
) - and more than that, it has different line count.This is really confusing to me, and I don't really understand how to interpret the results. There's no diference between these targets but the llvm-lines output is massively different and the functions that stand out seems to be all over the place. Some are generic, some are not. Some functions from dependencies are shown, some not (some are generic, some are not).
The project is not open source, yet, so it might be difficult to interpret now. I will open source it in following weeks/months, though.