https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115261
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |missed-optimization Version|unknown |14.1.0 Target Milestone|--- |11.5 CC| |rguenth at gcc dot gnu.org --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- I suppose it's di_result[0] += si_result[0]; di_result[1] += si_result[1]; on x86 we do vect__5.11_99 = (vector(2) long long int) _100; vect__6.12_98 = _29 + vect__5.11_99; as we have a extendv2siv2di pattern. It's probably easier to try reproducing with a testcase not involving varargs but {di,si}_result initialized from incoming parameters?