Loop optimizations implemented in the front end (source-to-source transformation)

     I'd like to implement loop transformations that are currently implemented in LLVM (loop distribution/fission, strip, coalescing, etc) in the front end, normally using Clang normally using libtooling?

     Did anybody tried this already or is considering it? I know currently of the Scout project (https://tu-dresden.de/die_tu_dresden/zentrale_einrichtungen/zih/forschung/projekte/scout/publications) which does something similar with Clang, without using libtooling, making it harder to use and I guess less standard.

     Another feasible option I'm considering is using CIL (for the C language; available at GitHub - cil-project/cil: C Intermediate Language) - well, a more complete list of similar tools is available at List of program transformation systems - Wikipedia .

   Thank you,