diff --git a/tests/core/test_em_asm_2.cpp b/tests/core/test_em_asm_2.cpp index 91e40e3911000..92721ad11eaa7 100644 --- a/tests/core/test_em_asm_2.cpp +++ b/tests/core/test_em_asm_2.cpp @@ -102,11 +102,11 @@ int main() i = EM_ASM_INT("{console.log('5. got int ' + $0); return 7.5;}", 42); printf("5. returned int %d\n", i); printf("\nEM_ASM_INT: Return an integer in a single brief statement.\n"); - i = EM_ASM_INT(return HEAP8.length); printf("1. returned statement %d\n", i); - i = EM_ASM_INT("return HEAP8.length+1"); printf("2. returned statement %d\n", i); - i = EM_ASM_INT({"return HEAP8.length+2"}); printf("3. returned statement %d\n", i); - i = EM_ASM_INT({return HEAP8.length+3}); printf("4. returned statement %d\n", i); - i = EM_ASM_INT("return HEAP8.length+4"); printf("5. returned statement %d\n", i); + i = EM_ASM_INT(return 42); printf("1. returned statement %d\n", i); + i = EM_ASM_INT("return 42+1"); printf("2. returned statement %d\n", i); + i = EM_ASM_INT({"return 42+2"}); printf("3. returned statement %d\n", i); + i = EM_ASM_INT({return 42+3}); printf("4. returned statement %d\n", i); + i = EM_ASM_INT("return 42+4"); printf("5. returned statement %d\n", i); // Note that expressions do not evaluate to return values, but the "return" keyword is needed. That is, the following line would return undefined and store i <- 0. // i = EM_ASM_INT(HEAP8.length); printf("returned statement %d\n", i); diff --git a/tests/core/test_em_asm_2.out b/tests/core/test_em_asm_2.out index 10ca9d7d5a252..9ee29c6c2c286 100644 --- a/tests/core/test_em_asm_2.out +++ b/tests/core/test_em_asm_2.out @@ -113,11 +113,11 @@ EM_ASM_INT: Return an integer back. 5. returned int 7 EM_ASM_INT: Return an integer in a single brief statement. -1. returned statement 16777216 -2. returned statement 16777217 -3. returned statement 16777218 -4. returned statement 16777219 -5. returned statement 16777220 +1. returned statement 42 +2. returned statement 43 +3. returned statement 44 +4. returned statement 45 +5. returned statement 46 EM_ASM_DOUBLE: Pass no parameters, return a double. 1. returning double diff --git a/tests/core/test_emptyclass.cpp b/tests/core/test_emptyclass.cpp index 09327f9a88418..8f9d88bee315a 100644 --- a/tests/core/test_emptyclass.cpp +++ b/tests/core/test_emptyclass.cpp @@ -12,7 +12,6 @@ struct Randomized { }; int main(int argc, const char *argv[]) { - new Randomized(55); - + Randomized(55); return 0; } diff --git a/tests/test_core.py b/tests/test_core.py index a897565d32a0f..9abf86e098451 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -274,7 +274,7 @@ class TestCoreBase(RunnerCore): def is_wasm2js(self): return self.get_setting('WASM') == 0 -# A simple check whether the compiler arguments cause optimization. + # A simple check whether the compiler arguments cause optimization. def is_optimizing(self): return '-O' in str(self.emcc_args) and '-O0' not in self.emcc_args @@ -1837,8 +1837,8 @@ def test_em_asm(self): self.emcc_args.append('-std=gnu89') self.do_core_test('test_em_asm.cpp', force_c=True) - # Tests various different ways to invoke the EM_ASM(), EM_ASM_INT() and EM_ASM_DOUBLE() macros. - @no_asan('Cannot use ASan: test depends exactly on heap size') + # Tests various different ways to invoke the EM_ASM(), EM_ASM_INT() + # and EM_ASM_DOUBLE() macros. def test_em_asm_2(self): self.do_core_test('test_em_asm_2.cpp') self.emcc_args.append('-std=gnu89') @@ -5944,6 +5944,10 @@ def test_ssse3(self): @is_slow_test def test_sse4_1(self): src = test_file('sse/test_sse4_1.cpp') + if not self.is_optimizing() and '-fsanitize=address' in self.emcc_args: + # ASan with -O0 fails with: + # Compiling function #69:"__original_main" failed: local count too large + self.emcc_args.append('-O1') self.run_process([shared.CLANG_CXX, src, '-msse4.1', '-Wno-argument-outside-range', '-o', 'test_sse4_1', '-D_CRT_SECURE_NO_WARNINGS=1'] + clang_native.get_clang_native_args(), stdout=PIPE) native_result = self.run_process('./test_sse4_1', stdout=PIPE).stdout @@ -7577,6 +7581,7 @@ def test_asyncify_indirect_lists(self, args, should_pass): if should_pass: raise + @no_asan('asyncify stack operations confuse asan') def test_emscripten_scan_registers(self): self.set_setting('ASYNCIFY') self.do_core_test('test_emscripten_scan_registers.cpp') @@ -8742,9 +8747,9 @@ def setUp(self): # Add DEFAULT_TO_CXX=0 strict = make_run('strict', emcc_args=[], settings={'STRICT': 1}) -lsan = make_run('lsan', emcc_args=['-fsanitize=leak', '--profiling', '-O2'], settings={'ALLOW_MEMORY_GROWTH': 1}) -asan = make_run('asan', emcc_args=['-fsanitize=address', '--profiling', '-O2'], settings={'ALLOW_MEMORY_GROWTH': 1}) -asani = make_run('asani', emcc_args=['-fsanitize=address', '--profiling', '-O2', '--pre-js', os.path.join(os.path.dirname(__file__), 'asan-no-leak.js')], +lsan = make_run('lsan', emcc_args=['-fsanitize=leak', '--profiling'], settings={'ALLOW_MEMORY_GROWTH': 1}) +asan = make_run('asan', emcc_args=['-fsanitize=address', '--profiling'], settings={'ALLOW_MEMORY_GROWTH': 1}) +asani = make_run('asani', emcc_args=['-fsanitize=address', '--profiling', '--pre-js', os.path.join(os.path.dirname(__file__), 'asan-no-leak.js')], settings={'ALLOW_MEMORY_GROWTH': 1}) # Experimental modes (not tested by CI)