https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70501 This fixes 70501. The cause is an omission in typeck when converting a scalar operand to a vector. We use build_vector_from_val, which can return a CONSTRUCTOR. We fail to wrap that CONSTRUCTOR in a TARGET_EXPR. The ICE arises because at the point we meet that CONSTRUCTOR during the constexpr processing, the currently active object under construction is that for the result of the <= operator, which has type vector-of-bool, rather than vector-of-int. (thus this problem arises in other vector ops, but mostly undetected because the result type is the same as the operand type) ok? nathan