vsk added a comment.

In D98061#2615250 <https://reviews.llvm.org/D98061#2615250>, @phosek wrote:

> In D98061#2615239 <https://reviews.llvm.org/D98061#2615239>, @vsk wrote:
>
>> @ributzka may have stronger thoughts about when -fprofile-instr-generate 
>> must imply that a known set of symbols appear with external visibility. Up 
>> until now, the answer has been "always", and this is what tapi enforces for 
>> MachO. It's awkward to have this be inconsistent between MachO/ELF, but if 
>> there's a compelling performance reason then I think it's fine.
>
> From the perspective of Fuchsia, we've seen a noticeable impact of this 
> change when using `-fprofile-instr-generate` together `-fprofile-list` to 
> apply instrumentation selectively only to modified files.

What kind of impact do you see? If #counters > 0, is it mostly binary size 
cost? If #counters == 0, what's the avg. overhead of writing out the full 
profile? Can it be fixed by doing an early-exit in the runtime initializer, 
writing out an empty .profraw?

That raises a question about tooling support: some workflows (like the Xcode 
coverage plugin) might assume that a program compiled with 
-fprofile-instr-generate always creates a .profraw. If there's no profile 
written at all for the #counters == 0 case, that could be a breaking change.



================
Comment at: llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp:1082-1084
   auto *User = Function::Create(FunctionType::get(Int32Ty, false),
                                 GlobalValue::LinkOnceODRLinkage,
                                 getInstrProfRuntimeHookVarUseFuncName(), M);
----------------
phosek wrote:
> vsk wrote:
> > phosek wrote:
> > > @vsk do you know why we need this function instead of just using 
> > > `llvm.compiler.used`/`llvm.used` for the symbol? I used that approach for 
> > > ELF and it seems to be working fine.
> > I don't have the context for this, since this code is from before I started 
> > working on llvm. I'm guessing, but maybe it's possible that 
> > llvm(.compiler)?.used didn't exist or work well when this code was written.
> Would it be OK with you if I sent out a separate change to remove this?
Thanks, yes, that would be great.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D98061/new/

https://reviews.llvm.org/D98061

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to