Just passing on a request from Donald Knuth, from http://www-cs-faculty.stanford.edu/~knuth/news08.html , A Flame About 64-bit Pointers
# It is absolutely idiotic to have 64-bit pointers when I compile a program # that uses less than 4 gigabytes of RAM. When such pointer values appear # inside a struct, they not only waste half the memory, they effectively # throw away half of the cache. # The gcc manpage advertises an option "-mlong32" that sounds like what I want. # Namely, I think it would compile code for my x86-64 architecture, taking # advantage of the extra registers etc., but it would also know that my # program is going to live inside a 32-bit virtual address space. # Unfortunately, the -mlong32 option was introduced only for MIPS computers, # years ago. Nobody has yet adopted such conventions for today's most popular # architecture. Probably that happens because programs compiled with this # convention will need to be loaded with a special version of libc. # Please, somebody, make that possible. -- Summary: 32-bit pointers on 64-bit operating systems Product: gcc Version: 4.5.0 Status: UNCONFIRMED Keywords: missed-optimization Severity: enhancement Priority: P3 Component: target AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: tkoenig at gcc dot gnu dot org GCC target triplet: x86_64-*-* http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40647