https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70438
--- Comment #1 from Marc Glisse <glisse at gcc dot gnu.org> --- The result of a comparison is an "opaque" vector type, which can be converted much more freely than a regular vector type, in case the guessed return type doesn't exactly match the user's choice (it quickly decays to a regular vector type). So this is kind of done on purpose. It could make sense to restrict this a bit though. If you have some good rules to suggest... I don't know how much user code relies on it.