From 79a612a6ed307318244bfd21dbea84db79773bb6 Mon Sep 17 00:00:00 2001 From: Sam Clegg Date: Wed, 17 Jan 2024 22:40:11 +0000 Subject: [PATCH] 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. --- test/common.py | 19 +++++++++++-------- .../metadce/test_metadce_hello_O0.gzsize | 2 +- .../metadce/test_metadce_hello_O0.jssize | 2 +- .../metadce/test_metadce_minimal_O0.gzsize | 2 +- .../metadce/test_metadce_minimal_O0.jssize | 2 +- 5 files changed, 15 insertions(+), 12 deletions(-) diff --git a/test/common.py b/test/common.py index 036c89886e5c4..51e773cec98a0 100644 --- a/test/common.py +++ b/test/common.py @@ -833,6 +833,11 @@ def setUp(self): self.js_engines = config.JS_ENGINES.copy() self.settings_mods = {} self.emcc_args = ['-Wclosure', '-Werror', '-Wno-limited-postlink-optimizations'] + # TODO(https://github.com/emscripten-core/emscripten/issues/11121) + # For historical reasons emcc compiles and links as C++ by default. + # However we want to run our tests in a more strict manner. We can + # remove this if the issue above is ever fixed. + self.set_setting('NO_DEFAULT_TO_CXX') self.ldflags = [] # Increate stack trace limit to maximise usefulness of test failure reports self.node_args = ['--stack-trace-limit=50'] @@ -954,9 +959,13 @@ def has_changed_setting(self, key): def clear_setting(self, key): self.settings_mods.pop(key, None) - def serialize_settings(self): + def serialize_settings(self, ldflags=True): ret = [] + # Incomplete list of link-only settings + link_only_settings = ['NO_DEFAULT_TO_CXX'] for key, value in self.settings_mods.items(): + if not ldflags and key in link_only_settings: + continue if value == 1: ret.append(f'-s{key}') elif type(value) is list: @@ -994,7 +1003,7 @@ def get_emcc_args(self, main_file=False, ldflags=True): def is_ldflag(f): return any(f.startswith(s) for s in ['-sENVIRONMENT=', '--pre-js=', '--post-js=']) - args = self.serialize_settings() + self.emcc_args + args = self.serialize_settings(ldflags) + self.emcc_args if ldflags: args += self.ldflags else: @@ -1034,12 +1043,6 @@ def build(self, filename, libraries=None, includes=None, force_c=False, js_outfi filename = test_file(filename) suffix = '.js' if js_outfile else '.wasm' compiler = [compiler_for(filename, force_c)] - if compiler[0] == EMCC: - # TODO(https://github.com/emscripten-core/emscripten/issues/11121) - # For historical reasons emcc compiles and links as C++ by default. - # However we want to run our tests in a more strict manner. We can - # remove this if the issue above is ever fixed. - compiler.append('-sNO_DEFAULT_TO_CXX') if force_c: assert shared.suffix(filename) != '.c', 'force_c is not needed for source files ending in .c' diff --git a/test/other/metadce/test_metadce_hello_O0.gzsize b/test/other/metadce/test_metadce_hello_O0.gzsize index b56ff12c6afff..240688a836da8 100644 --- a/test/other/metadce/test_metadce_hello_O0.gzsize +++ b/test/other/metadce/test_metadce_hello_O0.gzsize @@ -1 +1 @@ -8422 +8391 diff --git a/test/other/metadce/test_metadce_hello_O0.jssize b/test/other/metadce/test_metadce_hello_O0.jssize index 911307c4debd0..3bd7ffbd03993 100644 --- a/test/other/metadce/test_metadce_hello_O0.jssize +++ b/test/other/metadce/test_metadce_hello_O0.jssize @@ -1 +1 @@ -23089 +23004 diff --git a/test/other/metadce/test_metadce_minimal_O0.gzsize b/test/other/metadce/test_metadce_minimal_O0.gzsize index 648cdcc522684..0ba1b2ec94e39 100644 --- a/test/other/metadce/test_metadce_minimal_O0.gzsize +++ b/test/other/metadce/test_metadce_minimal_O0.gzsize @@ -1 +1 @@ -7251 +7218 diff --git a/test/other/metadce/test_metadce_minimal_O0.jssize b/test/other/metadce/test_metadce_minimal_O0.jssize index 6442a9a828cff..332854a72af75 100644 --- a/test/other/metadce/test_metadce_minimal_O0.jssize +++ b/test/other/metadce/test_metadce_minimal_O0.jssize @@ -1 +1 @@ -19713 +19628