With this patch, ComplexDeinterleavingPass now has the ability to handle
any number of interconnected operations involving complex numbers.
For example, the patch enables the processing of code like the following:
for (int i = 0; i < 1000; ++i) {
a[i] = w[i] * v[i]; b[i] = w[i] * u[i];
}
This code has multiple arrays containing complex numbers and a common
subexpression w that appears in two expressions.
What's the rationale behind removing this? I might be missing something, but it looks like you're removing it then looking for the internal instructions on-demand in checkNodes later