Executing the following command to obtain the gcc parameters that are used with "-march=native" seems to show that gcc reports the wrong L2 cache size. My processor is an Intel Haswell. # gcc -march=native -E -v - </dev/null 2>&1 | grep cc1 ... --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=8192 The Haswell L2 cache is 256K, but gcc shows that it is 8192K. But the Haswell L3 cache size _is_ 8192K. Does gcc designate the L3 cache to be the L2 cache, or is this actually an error in the reporting of the cache size? If it is indeed an error, would it be advisable to include the correct L2 size with "--param l2-cache-size=256"?