Improving LoopVersioningLICM - call for colaboration

Greetings loop optimizers!

I would like to make improvements to the LoopVersioningLICM mechanism (with appropriate changes in LoopAccessAnalysis) that would allow it to handle indirectly loaded pointers. For example

void mem_copy_01(char **dst, char *src, int bytes_count) {
    while (bytes_count--)
    {
      *((*dst)++) = (*src)++;
    }
}

A previous attempt to upstream these improvements did not go in, but I believe there were no fundamental reasons that such changes could not be made. I plan to implement something along the lines of that initial proposal.

I have the bandwidth to do the work, but not enough experience with this type of analysis. I would really appreciate it if someone more familiar with the domain were available to discuss the overall structure of the required changes (if not the implementation specifics).

If you’re interested in collaborating, I’d love to discuss this further!

Vladi