Hello Richard,
Another one that would be interesting is the missed SMS opportunity exposed by Jim Huang's NEON intrinsic example from a while back. If we have a loop such as:
for (int i = 0; i < n; i++) { unsigned short foo = a[i]; ... a[i] = ...; }
then SMS treats the read from a[i + 1] as having a true dependency on a
[i],
preventing any useful cross-iteration scheduling.
That's indeed a long standing issue which suppresses SMS and resolving it would be great! The last attempt to address it iinm was done by the ispras guys for ia64 where they tried to propagate data-dependence information from trees to RTL: http://gcc.gnu.org/ml/gcc/2007-12/msg00240.html That patch is quite old and not in mainline.
Thanks, Revital