Your compiletime_assert framework is relying on the optimizer performing dead code elimination to remove the call to prefix ## suffix. This is highly fragile and is in no way guaranteed to work. Instead, try using one of the solutions from Ways to ASSERT expressions at build time in C -...
As a comment already mentioned, there is no error. The next step is to actually start building the compiler, and then install it. E.g. something like # How many cpu's to use NCPUS=4 make -j $NCPUS && make install Note that as you haven't specified a prefix for your configure...
It is extremely likely that any sane compiler will convert that entire expression (including the cast) into a constant when compiling with optimizations enabled. However, to be sure, you'll need to look at the assembly output of your compiler. But what about GCC 4.8.1 in particular? Code #include <stdint.h> #include...
The default flags for gcc can be set when gcc itself is compiled. Run: gcc -Q --help=target to see what the default is on your machine. Likely it'll just be x86-64 even though the man page doesn't document that as a value for -march-...
The problem is that although you are using a 64bit data type, your calculations are using 32bit values, so you are encountering integer overflow. 140417 * 100000 is 14041700000 (0x344F356A0) in 64bit, but is 1156798112 (0x44F356A0) in 32bit. As you can see, 0x300000000 is being truncated off of the result,...