https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106902
--- Comment #16 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Alexander Monakov from comment #15) > (In reply to Richard Biener from comment #14) > > I can't > > seem to reproduce any vectorization for your smaller example though. > > My small C samples omit some detail as they were meant to illustrate what > happened in the IR. Is that a problem? Not a Problem - it would have made life easier of course ;) > By the way, I noticed that tree-ssa-math-opts incorrectly handles > -ffp-contract: > > if (FLOAT_TYPE_P (type) > && flag_fp_contract_mode == FP_CONTRACT_OFF) > return false; > > It should be 'flag_fp_contract_mode != FP_CONTRACT_FAST' instead (the pass > doesn't have any idea about expression boundaries). It dates back to > g:1694907238eb Ah - feel free to fix that (I think such change would be obvious, even better when accompanied by a comment). I do think that since the only way to preserve expression boundaries is by PAREN_EXPR that the middle-end shouldn't care about FAST vs. ON (well, it cannot), but the language frontends need to ensure to emit PAREN_EXPRs for =ON and omit them for =FAST. Since we don't implement ON the above check should indeed be changed until that's fixed.