Re: It bears repeating: Building a CPU that runs C fast considered harmful.
First issue -- Any C compatible CPU needs to have Byte addressing. This doubles the size of pointers unnecessarily.
Java can actually access 32 Gig of RAM with just 32 bit pointers. Because objects are not byte aligned, and it knows that. Huge saving in memory. And C's pointers into anything kills garbage collection anyway.
A 32 bit Non-C CPU would contain enough address space for virtually any application today, or for the next several decades. Notice how memory requirements have stabilized at about 4 gig for a basic PC? The doubling of the transistor count is purely for C.
If you are going to have huge pointers, then adding tag bits can hugely optimize dynamic type checking. But C does not do that, so they are not available, even though 48 bit address spaces are larger than anyone will use.
The second issue is that it impossible to implement modern, efficient garbage collection in C. A third is that C does not detect integer overflow, which should be standard.