[LLVMdev] ProfileInfo Questions -- How to proceed?
astifter-llvm at gmx.at
Thu Jan 21 02:20:51 PST 2010
I have some questions about the maintenance of the Profiling Code, since
this is largely my contribution I still feel responsible for it.
(I have not finished my master thesis, so it also is still work in
When there are API changes in LLVM, I guess the person changing the API
is responsible for changing all the occurrences in LLVM? (So I do not
have to worry about that...)
The other thing is bugs and problems: I'm watching the llvm-bugs and
llvm-commits lists for profiling related posts, I hope that's enough to
keep everyone happy.
(I usually do not respond to build problems related to the runtime
library libprofile since I really can not help in that cases, I hope
this is okay too.)
Chris and me talked a while ago that he would like to see the
ProfileInfo implementation changed from an template-based one to a
(void*)-based one (for a lack of better terms).
I haven't wrapped my head around this, how important is this? Would it
be a showstopper for 2.7 if this stuff is still template-based?
And the (almost) last question:
How shall I proceed with preserving the ProfileInfo throughout the
various optimistation passes? I have a (huge) patch that adds support
for the std-compile-opts passes, but it is still not preserving all of
the ProfileInfo correctly. Is correctness a huge factor?
Or is having the preservation at least in a somewhat working state (so
that it is usable) more important?
In general terms it works fine, there are just some quirks where the
flow condition is not met. In my personal opinion the ProfileInfo is
still of some use after that...
And the last one:
When passes are added or modified and the ProfileInfo preservation
breaks, who is responsible for fixing it? I guess the ProfileInfo is the
only analysis that can not be recalculated after its destroyed (as
compared to e.g the LoopInfo) and thus has to be preserved (idealy)
everywhere, so this is quite an issue...
Sorry for the lengthy post, thanks for the answers in advance...
More information about the llvm-dev