/* { dg-do compile } */ /* { dg-require-effective-target vect_double } */ /* { dg-additional-options "-w -Wno-psabi" } */ typedef double __attribute__((vector_size(16))) v2df; v2df f(v2df a, v2df b) { return (v2df){a[0] + b[0], a[1] + b[1]}; } v2df g(v2df a, v2df b) { return (v2df){a[0] + b[1], a[1] + b[0]}; } /* Verify we manage to vectorize this with using the original vectors and do not end up with any vector CTORs. */ /* { dg-final { scan-tree-dump-times "optimized: basic block" 2 "slp2" } } */ /* { dg-final { scan-tree-dump-not "vect_cst" "slp2" } } */