https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97784
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Component|rtl-optimization |target Target| |powerpc --- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- There is targetm.sched.reassociation_width which specifies how re-assocation should make such sequence "wide". Andrew is correct that we don't do this for any types that are TYPE_OVERFLOW_UNDEFINED. And powerpc has static int rs6000_reassociation_width (unsigned int opc ATTRIBUTE_UNUSED, machine_mode mode) { switch (rs6000_tune) { case PROCESSOR_POWER8: case PROCESSOR_POWER9: case PROCESSOR_POWER10: if (DECIMAL_FLOAT_MODE_P (mode)) return 1; if (VECTOR_MODE_P (mode)) return 4; if (INTEGRAL_MODE_P (mode)) return 1; thus you get width 1 which means a linear chain (even if the user wrote a tree). Note RTL doesn't do any such thing like re-assocation (I guess in principle scheduling could, and that's the only place where it would make sense on RTL).