I’m new to LLVM and I’m planning to write a compiler, which would behave slighty different than all current tools.
As an input it will not get text but it will read a file (lets assume for a moment, that in this file there will be a graph structure).
Before generating IR code I want to be able to run optimalization and analysis passes on this graph and after these passes I want to run pass that will generate LLVM IR on top of previously gathered informations.
Additional I want to be able to chose pass which will produce IR code (if there will be more than one such pass).
Is it possible in LLVM? (can I generate IR inside a compilation pass and use passes in described way?)
If the above description will be not clear, concider following construction (uppercase letters are passes and lowercase letters are data consumed and produced by each pass respectlively)
I1: c → IR
I2: d → IR
… (other LLVM passes)
and now I could enable passes:
A,B and I1
A,C and I2
(both of them generate IR code but differently).
I would be very thankfull if something like that could be done in LLVM and if yes, any further materials will be very appreciated