Skip to content

Commit 79a612a

Browse files
committed
Run more of out tests with -sNO_DEFAULT_TO_CXX
We were previously only applying this flag to tests that use `self.build` (i.e. most test). Now we apply it to and even larger set. The code size changes here only occur in debug builds where we enumerate all known JS symbols, and there are come JS symbols are the C++ only.
1 parent 9fe607b commit 79a612a

File tree

5 files changed

+15
-12
lines changed

5 files changed

+15
-12
lines changed

test/common.py

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -833,6 +833,11 @@ def setUp(self):
833833
self.js_engines = config.JS_ENGINES.copy()
834834
self.settings_mods = {}
835835
self.emcc_args = ['-Wclosure', '-Werror', '-Wno-limited-postlink-optimizations']
836+
# TODO(https://github.com/emscripten-core/emscripten/issues/11121)
837+
# For historical reasons emcc compiles and links as C++ by default.
838+
# However we want to run our tests in a more strict manner. We can
839+
# remove this if the issue above is ever fixed.
840+
self.set_setting('NO_DEFAULT_TO_CXX')
836841
self.ldflags = []
837842
# Increate stack trace limit to maximise usefulness of test failure reports
838843
self.node_args = ['--stack-trace-limit=50']
@@ -954,9 +959,13 @@ def has_changed_setting(self, key):
954959
def clear_setting(self, key):
955960
self.settings_mods.pop(key, None)
956961

957-
def serialize_settings(self):
962+
def serialize_settings(self, ldflags=True):
958963
ret = []
964+
# Incomplete list of link-only settings
965+
link_only_settings = ['NO_DEFAULT_TO_CXX']
959966
for key, value in self.settings_mods.items():
967+
if not ldflags and key in link_only_settings:
968+
continue
960969
if value == 1:
961970
ret.append(f'-s{key}')
962971
elif type(value) is list:
@@ -994,7 +1003,7 @@ def get_emcc_args(self, main_file=False, ldflags=True):
9941003
def is_ldflag(f):
9951004
return any(f.startswith(s) for s in ['-sENVIRONMENT=', '--pre-js=', '--post-js='])
9961005

997-
args = self.serialize_settings() + self.emcc_args
1006+
args = self.serialize_settings(ldflags) + self.emcc_args
9981007
if ldflags:
9991008
args += self.ldflags
10001009
else:
@@ -1034,12 +1043,6 @@ def build(self, filename, libraries=None, includes=None, force_c=False, js_outfi
10341043
filename = test_file(filename)
10351044
suffix = '.js' if js_outfile else '.wasm'
10361045
compiler = [compiler_for(filename, force_c)]
1037-
if compiler[0] == EMCC:
1038-
# TODO(https://github.com/emscripten-core/emscripten/issues/11121)
1039-
# For historical reasons emcc compiles and links as C++ by default.
1040-
# However we want to run our tests in a more strict manner. We can
1041-
# remove this if the issue above is ever fixed.
1042-
compiler.append('-sNO_DEFAULT_TO_CXX')
10431046

10441047
if force_c:
10451048
assert shared.suffix(filename) != '.c', 'force_c is not needed for source files ending in .c'
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
8422
1+
8391
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
23089
1+
23004
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
7251
1+
7218
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
19713
1+
19628

0 commit comments

Comments
 (0)