The C++ ABI is missing fallbacks for exact 16- and 32-bit types when using programming models like ILP64 (e.g. MIPS -mint64 option below):
/opt/cross/mips-linux-uclibc-gcc341/bin/mips-linux-uclibc-g++ -c -mint64 bug01.cpp bug01.cpp:19: internal compiler error: in write_builtin_type, at cp/mangle.c:1686 Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://gcc.gnu.org/bugs.html> for instructions. typedef int int16_exact_t __attribute__((__mode__(__HI__))); typedef int int32_exact_t __attribute__((__mode__(__SI__))); long getbit(int16_exact_t v) { return v & 1; } long getbit(int32_exact_t v) { return v & 1; } -- Summary: C++ ABI is incomplete for ILP64 Product: gcc Version: 3.4.3 Status: UNCONFIRMED Severity: normal Priority: P2 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: markus at oberhumer dot com CC: gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18744