https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80283
--- Comment #17 from Wilco <wilco at gcc dot gnu.org> --- (In reply to shatz from comment #16) > I still think that effect of tree-ter is accidental and relatively > unimportant. > Very similar problems with SIMD register allocation could easily happen > without tree-ter, as demonstrated by 3 out of 4 cases of bad register > allocation presented in this thread. > > It seems to me that the problem shall be handled in the back-end rather than > middle-end (not sure that I got your terminology about various "ends" right). Backends cannot fix bad scheduling/allocation/spilling. The unnecessary register pressure is caused by the mid-end. Whether it's due to expand, ter, vectorizer or scheduler doesn't really matter - there must be a pass that reduces register pressure in areas where it is high.