Well, most production quality compilers, gcc included, are capable of vectorization these days. For gcc there is the -ftree-vectorize option (included in -O3 in newer versions), and -ftree-vectorizer-verbose= option for printing diagnostics.
For C and C++, you probably have to mark some of your argument pointers/references with __restrict.