Removing legacy profiling code from LLVM

Alright, I’m ready to nuke it. Last chance to say stop.

For context of others, this has come up repeatedly: no one we know of is using EdgeProfiling.cpp, PathProfiling.cpp, and the lib/Analysis/Profile*Pass.cpp collection of tools. They haven’t been updated since 2012 when Alastair Murray looked into this stuff, and both current efforts towards PGO are essentially totally different implementation strategies that won’t benefit from this code being here.

If anything, this code is actively confusing those efforts and so I would like to garbage collect and help pave the way for new stuff. We can always recover this code from the VCS if needed in the future.

Files on the chopping block:

deleted: include/llvm/Analysis/PathNumbering.h

deleted: include/llvm/Analysis/PathProfileInfo.h

deleted: include/llvm/Analysis/ProfileDataLoader.h

deleted: include/llvm/Analysis/ProfileDataTypes.h

deleted: include/llvm/Analysis/ProfileInfo.h

deleted: include/llvm/Analysis/ProfileInfoLoader.h

deleted: include/llvm/Analysis/ProfileInfoTypes.h

deleted: lib/Analysis/PathNumbering.cpp

deleted: lib/Analysis/PathProfileInfo.cpp

deleted: lib/Analysis/PathProfileVerifier.cpp

deleted: lib/Analysis/ProfileDataLoader.cpp

deleted: lib/Analysis/ProfileDataLoaderPass.cpp

deleted: lib/Analysis/ProfileEstimatorPass.cpp

deleted: lib/Analysis/ProfileInfo.cpp

deleted: lib/Analysis/ProfileInfoLoader.cpp

deleted: lib/Analysis/ProfileInfoLoaderPass.cpp

deleted: lib/Analysis/ProfileVerifierPass.cpp

deleted: lib/Transforms/Instrumentation/EdgeProfiling.cpp

deleted: lib/Transforms/Instrumentation/OptimalEdgeProfiling.cpp

deleted: lib/Transforms/Instrumentation/PathProfiling.cpp

Please let me know if you have any concerns. I’m likely to submit this rather soon and revert it if I hear any problems because we’ve already spent too much time with newcomers looking at this code, trying to do stuff with it, and then realizing it never really worked or was actively maintained.

BTW, this will also remove the entire ‘runtime’ directory in the LLVM repository.

Runtime libraries are now being developed in compiler-rt. That is where the GCDA profiling runtime already lives and any new instrumentation based profiling runtime would also likely live there.

If the code in the existing runtime tree is needed to start building those, they can always be found in the VCS as usual.

I’m planning to submit this tomorrow morning.


Thanks. This will be fairly useful, as some of the names and concepts
clash with the existing files.