Using GHC Api to affect compilation of a module

Hello people, I'm evaluating the use of the GHC API (6.12.3) to piggyback into the compilation process (in order, for example, to implement a custom optimization) and I'm having a lot of trouble doing so. In particular, I tried to modify a program being compiled, by working on its Core representation. The idea is that the skeleton of the program would be something like: runGhc (Just libdir) $ do ... c <- compileToCoreModule targetFile compileCoreToObj False (modify c) ... with modify :: CoreModule -> CoreModule being, for now, a rather trivial (identity) function. The first issue I've found is that compileCoreToObj fails (the error is "expectJust mkStubPaths"). However, I've also found that when compileToCoreModule ends, the .hi and .o files have already been produced, which kind of defeats any attempt to change the core code and then proceeding with the rest of the compilation. Am I doing this right? By scanning over the GHC API documentation those functions seemed to be the appropriate ones to start testing with, but I guess there's something trivial (or not) I'm missing. I'd be really thankful for any input. Best regards, - Matias H.
participants (1)
-
Matias Hernandez