| Index: build/SConscript.main
|
| diff --git a/build/SConscript.main b/build/SConscript.main
|
| index 4289b43d76fecf0313953dc6a148eaf4702d3aec..6f448c7140b6c214f939e5fd5e777a75f11f4170 100644
|
| --- a/build/SConscript.main
|
| +++ b/build/SConscript.main
|
| @@ -475,7 +475,29 @@ if not root_env.get('_GYP'):
|
| )
|
| linux_env.Append(
|
| ASFLAGS = ['-32'],
|
| - CCFLAGS = ['-m32', '-pthread', '-march=i686', '-fno-exceptions'],
|
| + CCFLAGS = ['-m32', '-pthread', '-march=pentium4', '-fno-exceptions',
|
| + # All floating-point computations on x87 happens in 80-bit precision.
|
| + # Because the C and C++ language standards allow the compiler to keep the
|
| + # floating-point values in higher precision than what's specified in the
|
| + # source and doing so is more efficient than constantly rounding up to
|
| + # 64-bit or 32-bit precision as specified in the source, the compiler,
|
| + # especially in the optimized mode, tries very hard to keep values in x87
|
| + # floating-point stack (in 80-bit precision) as long as possible. This has
|
| + # important side effects, that the real value used in computation may
|
| + # change depending on how the compiler did the optimization - that is, the
|
| + # value kept in 80-bit is different than the value rounded down to 64-bit
|
| + # or 32-bit. There are possible compiler options to make this behavior
|
| + # consistent (e.g. -ffloat-store would keep all floating-values in the
|
| + # memory, thus force them to be rounded to its original precision) but they
|
| + # have significant runtime performance penalty.
|
| + #
|
| + # -mfpmath=sse -msse2 makes the compiler use SSE instructions which keep
|
| + # floating-point values in SSE registers in its native precision (32-bit
|
| + # for single precision, and 64-bit for double precision values). This means
|
| + # the floating-point value used during computation does not change
|
| + # depending on how the compiler optimized the code, since the value is
|
| + # always kept in its specified precision.
|
| + '-msse2', '-mfpmath=sse'],
|
| # GCC will generate ident directives with the GCC version. Accumulate
|
| # these all up and you end up with ~80K repeated in a .comment section.
|
| CCFLAGS_OPTIMIZED = ['-fno-ident'],
|
|
|