When I was looking up something in the Altivec PIM if "vector bool a;" was valid, I noticed a section which I had never read before, most likely because it is part of the ABI section of the Altivec PIM.
The specific section says: 3.5 malloc(), vec_malloc(), and new In the interest of saving space, malloc(), calloc(), and realloc() are not required to return a 16-byte aligned address. Instead, a new set of memory management functions is introduced that return a 16-byte aligned address. The new functions are named vec_malloc(), vec_calloc(), vec_realloc(), and vec_free(). The two sets of memory management functions may not be interchanged: memory allocated with malloc(), calloc(), or realloc() may only be freed with free() and reallocated with realloc(); memory allocated with vec_alloc(), vec_calloc(), or vec_realloc() may only be freed with vec_free() and reallocated with vec_realloc(). The user must use the appropriate set of functions based on the alignment requirement of the type involved. In the case of the C++ operator new, the implementation of new is required to use the appropriate set of functions based on the alignment requirement of the type. -- Summary: "3.5 malloc(), vec_malloc(), and new" part of the Alivec PIM is not implemented Product: gcc Version: 4.4.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: pinskia at gcc dot gnu dot org GCC target triplet: powerpc*-*-* http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36925