> I don't quite understand - you are checking loop_vinfo->vector_mode, but > how can you be sure no chosen vector uses a !VECTOR_MODE_P? It seems > fragile to rely on (it might work in this case), instead when any > !VECTOR_MODE_P needs a 'len' we should reject it - so why does this > not happen here?
It appears we detect an over-widening pattern and set the initial ("natural"?) vector mode there to DImode. Afterwards we find a vectorizable_reduction that does not check for partial vector usage (no single def-use cycle nor fold-left reduction). As there are no loads/stores we never reach check_load_store_for_partial_vectors which disables partial vectors. Should the check then rather be in vectorizable_reduction? -- Regards Robin