incorrect IR representation for bool GCC vectors

Hi all,

i have found out that IR representation of bool vectors is incorrect. The following code

typedef bool v128b __attribute__ ((vector_size (16)));
int main() {
   v128b v1;
}

gives

define i32 @main() nounwind {
entry:
   %v1 = alloca <16 x i1>, align 16
   ret i32 0
}

<16 x i1> is insufficient for 16-byte vector.
GCC docs(http://gcc.gnu.org/onlinedocs/gcc/Vector-Extensions.html) say nothing about bool as base vector type but GCC accepts the above code.
I guess the correct representation should be either <128 x i1> or <16 x i8>.. Or maybe bool vectors should be prohibited?
Any thoughts?

Submitted to bugzilla: http://llvm.org/bugs/show_bug.cgi?id=8512