I would never rely on automatic vectorization from any compiler. With gcc I would be doubly careful, because the effects of gcc optimization always change from version to version. Almost everyone I know who relies on special optimizations or extensions to gcc needs to deal with breakdowns when releasing a new version of gcc .
You can usually trust pragmas and internal features, but you should carefully follow the comments for the release of new versions of gcc, and you should tell your users which version of gcc is needed to compile your code.
Once or twice, when vectorization really mattered, we added something to the test suite to invoke objdump and make sure that vector instructions are actually used. It would be nice to be able to detect "bad vector code" (as described by Niels) automatically, but we never reached.
source share