Browse Source

build: remove --unsafe-optimizations flag

The previous commit removes our patch that builds V8 at -O2 rather
than -O3 so there is not much point in keeping the configure switch
around.

The reason it did so was to work around an assortment of compiler and
linker bugs. In particular, certain combinations of g++ and binutils
generate bad or no code when -ffunction-sections or -finline-functions
is enabled (which -O3 implicitly does.)

It was quite the problem back in the day because everyone and his dog
built from source. Now that we have prebuilt binaries and packages
available, there is no longer a pressing need to be so accommodating.

If you experience spurious (or possibly not so spurious) segmentation
faults after this commit, you need to upgrade your compiler/linker
toolchain.
v0.11.4-release
Ben Noordhuis 12 years ago
parent
commit
9b3de60d35
  1. 33
      common.gypi
  2. 8
      configure

33
common.gypi

@ -11,10 +11,6 @@
'clang%': 0, 'clang%': 0,
'python%': 'python', 'python%': 'python',
# Turn on optimizations that may trigger compiler bugs.
# Use at your own risk. Do *NOT* report bugs if this option is enabled.
'node_unsafe_optimizations%': 0,
# Enable V8's post-mortem debugging only on unix flavors. # Enable V8's post-mortem debugging only on unix flavors.
'conditions': [ 'conditions': [
['OS == "win"', { ['OS == "win"', {
@ -53,37 +49,22 @@
}, },
}, },
'Release': { 'Release': {
'cflags': [ '-O3', '-ffunction-sections', '-fdata-sections' ],
'ldflags': [ '-Wl,--gc-sections' ],
'conditions': [ 'conditions': [
['target_arch=="x64"', { ['target_arch=="x64"', {
'msvs_configuration_platform': 'x64', 'msvs_configuration_platform': 'x64',
}], }],
['node_unsafe_optimizations==1', {
'cflags': [ '-O3', '-ffunction-sections', '-fdata-sections' ],
'ldflags': [ '-Wl,--gc-sections' ],
}, {
'cflags': [ '-O2', '-fno-strict-aliasing' ],
'cflags!': [ '-O3', '-fstrict-aliasing' ],
'conditions': [
# Required by the dtrace post-processor. Unfortunately,
# some gcc/binutils combos generate bad code when
# -ffunction-sections is enabled. Let's hope for the best.
['OS=="solaris"', { ['OS=="solaris"', {
'cflags': [ '-ffunction-sections', '-fdata-sections' ], 'cflags': [ '-fno-omit-frame-pointer' ],
}, { # pull in V8's postmortem metadata
'cflags!': [ '-ffunction-sections', '-fdata-sections' ], 'ldflags': [ '-Wl,-z,allextract' ]
}], }],
['clang == 0 and gcc_version >= 40', { ['clang == 0 and gcc_version >= 40', {
'cflags': [ '-fno-tree-vrp' ], 'cflags': [ '-fno-tree-vrp' ], # Work around compiler bug.
}], }],
['clang == 0 and gcc_version <= 44', { ['clang == 0 and gcc_version <= 44', {
'cflags': [ '-fno-tree-sink' ], 'cflags': [ '-fno-tree-sink' ], # Work around compiler bug.
}],
],
}],
['OS=="solaris"', {
'cflags': [ '-fno-omit-frame-pointer' ],
# pull in V8's postmortem metadata
'ldflags': [ '-Wl,-z,allextract' ]
}], }],
], ],
'msvs_settings': { 'msvs_settings': {

8
configure

@ -255,12 +255,6 @@ parser.add_option("--ninja",
dest="use_ninja", dest="use_ninja",
help="Generate files for the ninja build system") help="Generate files for the ninja build system")
# Using --unsafe-optimizations voids your warranty.
parser.add_option("--unsafe-optimizations",
action="store_true",
dest="unsafe_optimizations",
help=optparse.SUPPRESS_HELP)
parser.add_option("--xcode", parser.add_option("--xcode",
action="store_true", action="store_true",
dest="use_xcode", dest="use_xcode",
@ -442,8 +436,6 @@ def configure_node(o):
o['variables']['v8_no_strict_aliasing'] = 1 # work around compiler bugs o['variables']['v8_no_strict_aliasing'] = 1 # work around compiler bugs
o['variables']['node_prefix'] = os.path.expanduser(options.prefix or '') o['variables']['node_prefix'] = os.path.expanduser(options.prefix or '')
o['variables']['node_install_npm'] = b(not options.without_npm) o['variables']['node_install_npm'] = b(not options.without_npm)
o['variables']['node_unsafe_optimizations'] = (
1 if options.unsafe_optimizations else 0)
o['default_configuration'] = 'Debug' if options.debug else 'Release' o['default_configuration'] = 'Debug' if options.debug else 'Release'
host_arch = host_arch_win() if os.name == 'nt' else host_arch_cc() host_arch = host_arch_win() if os.name == 'nt' else host_arch_cc()

Loading…
Cancel
Save