Dynamic Optimization selection for individual functions

Hi All,

I am trying to write a machine learning algorithm that would predict a good optimization to apply to a given function. I wanted to perform this by modifying the list of optimizations applied by the FPPassManager based on some dynamic data.

At present I was trying to do this by modifying the FPPassManager::runOnFunction(Function) implementation. However this is causing the following error:
“LLVM ERROR: ‘main’ label emitted multiple times to assembly file”
I may be applying a few passes multiple times. Could anyone with an understanding of the PassManager shed some light on this?

May be you’re emitting the function, at the end of compilation, multiple times ?