[llvm-bugs] [Bug 38340] New: Bogus __llvm_profile_data for __llvm_profile_runtime_user
via llvm-bugs
llvm-bugs at lists.llvm.org
Fri Jul 27 08:59:19 PDT 2018
https://bugs.llvm.org/show_bug.cgi?id=38340
Bug ID: 38340
Summary: Bogus __llvm_profile_data for
__llvm_profile_runtime_user
Product: new-bugs
Version: unspecified
Hardware: PC
OS: Windows NT
Status: NEW
Severity: enhancement
Priority: P
Component: new bugs
Assignee: unassignedbugs at nondot.org
Reporter: dmajor at mozilla.com
CC: davidxl at google.com, llvm-bugs at lists.llvm.org,
rnk at google.com
A PGO-instrumented DLL on Windows has static initializers that go like:
00007ffa`4eb1e234 488d0de5ffffff lea rcx,[nss3!_llvm_profile_runtime_user
(00007ffa`4eb1e220)]
00007ffa`4eb1e23b e820ab0e00 call nss3!__llvm_profile_register_function
(00007ffa`4ec08d60)
00007ffa`4eb1e240 488d0db9ec1800 lea rcx,[nss3!_profd_sprintf
(00007ffa`4ecacf00)]
00007ffa`4eb1e247 e814ab0e00 call nss3!__llvm_profile_register_function
(00007ffa`4ec08d60)
00007ffa`4eb1e24c 488d0dddec1800 lea rcx,[nss3!_profd_vsprintf
(00007ffa`4ecacf30)]
00007ffa`4eb1e253 e808ab0e00 call nss3!__llvm_profile_register_function
(00007ffa`4ec08d60)
[...many more...]
The ones for sprintf and friends look fine, but the registration for
__llvm_profile_runtime_user contains garbage:
0:000> dt nss3!__llvm_profile_data 00007ffa`4eb1e220
+0x000 NameRef : 0xccc30013`514a058b
+0x008 FuncHash : 0xcccccccc`cccccccc
+0x010 CounterPtr : 0xe50d8d48`28ec8348 Void
+0x018 FunctionPointer : 0x000eab20`e8ffffff Void
+0x020 Values : 0xe80018ec`b90d8d48 Void
+0x028 NumCounters : 0xeab14
+0x02c NumValueSites : [2] 0x8d48
I'm not even sure if __llvm_profile_runtime_user is supposed to be registered
here at all. It's not a __profd_... thing.
The list of registrations seems to come from `for (Value *Data : UsedVars)` in
http://llvm-cs.pcc.me.uk/lib/Transforms/Instrumentation/InstrProfiling.cpp#899
But there's a special case for `if (Data != NamesVar)` which suggests that
maybe not everything in `UsedVars` should be registered as a function.
Looking at the callers of `UsedVars.push_back`:
http://llvm-cs.pcc.me.uk/include/llvm/Transforms/Instrumentation/InstrProfiling.h/rUsedVars
Maybe `VNodesVar` and `User` should be avoided in that for-loop too?
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20180727/06b611a1/attachment.html>
More information about the llvm-bugs
mailing list