diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b27a17052..8a883366e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -66,6 +66,32 @@ jobs: run: cmake --build out --target run-c-api-tests - name: tests run: cmake --build out --target run-tests + build-msvc-other-archs: + name: build (windows ${{ matrix.arch }}) (minimal tests) + runs-on: ${{ matrix.runner }} + strategy: + fail-fast: false + matrix: + include: + - arch: x86 + runner: windows-latest + cmake_arch: Win32 + - arch: arm64 + runner: windows-11-arm + cmake_arch: ARM64 + steps: + - uses: actions/setup-python@v5 + with: + python-version: '3.x' + - uses: actions/checkout@v1 + with: + submodules: true + - name: cmake + run: cmake -S . -B out -A ${{ matrix.cmake_arch }} -DWERROR=ON -Werror=dev -DCMAKE_ERROR_DEPRECATED=OFF -DWABT_RUN_TESTS_ARGS=address64 + - name: build + run: cmake --build out + - name: tests + run: cmake --build out --target run-tests emscripten: name: emscripten runs-on: ubuntu-latest diff --git a/src/prebuilt/wasm2c_source_declarations.cc b/src/prebuilt/wasm2c_source_declarations.cc index d46aa00ba..4217a7e8c 100644 --- a/src/prebuilt/wasm2c_source_declarations.cc +++ b/src/prebuilt/wasm2c_source_declarations.cc @@ -200,7 +200,7 @@ R"w2c_template( if (__builtin_add_overflow(a, b, &ret)) )w2c_template" R"w2c_template( TRAP(OOB); )w2c_template" -R"w2c_template(#elif defined(_MSC_VER) +R"w2c_template(#elif defined(_MSC_VER) && defined(_M_X64) )w2c_template" R"w2c_template( if (_addcarry_u64(0, a, b, &ret)) )w2c_template" diff --git a/src/template/wasm2c.declarations.c b/src/template/wasm2c.declarations.c index a3a3ba3a8..0ebfd12df 100644 --- a/src/template/wasm2c.declarations.c +++ b/src/template/wasm2c.declarations.c @@ -107,7 +107,7 @@ static inline uint64_t checked_add_u64(uint64_t a, uint64_t b) { #if __has_builtin(__builtin_add_overflow) if (__builtin_add_overflow(a, b, &ret)) TRAP(OOB); -#elif defined(_MSC_VER) +#elif defined(_MSC_VER) && defined(_M_X64) if (_addcarry_u64(0, a, b, &ret)) TRAP(OOB); #else diff --git a/test/wasm2c/add.txt b/test/wasm2c/add.txt index 874e765e8..7b06d08ff 100644 --- a/test/wasm2c/add.txt +++ b/test/wasm2c/add.txt @@ -216,7 +216,7 @@ static inline uint64_t checked_add_u64(uint64_t a, uint64_t b) { #if __has_builtin(__builtin_add_overflow) if (__builtin_add_overflow(a, b, &ret)) TRAP(OOB); -#elif defined(_MSC_VER) +#elif defined(_MSC_VER) && defined(_M_X64) if (_addcarry_u64(0, a, b, &ret)) TRAP(OOB); #else diff --git a/test/wasm2c/check-imports.txt b/test/wasm2c/check-imports.txt index 9dedd98de..c93f73917 100644 --- a/test/wasm2c/check-imports.txt +++ b/test/wasm2c/check-imports.txt @@ -241,7 +241,7 @@ static inline uint64_t checked_add_u64(uint64_t a, uint64_t b) { #if __has_builtin(__builtin_add_overflow) if (__builtin_add_overflow(a, b, &ret)) TRAP(OOB); -#elif defined(_MSC_VER) +#elif defined(_MSC_VER) && defined(_M_X64) if (_addcarry_u64(0, a, b, &ret)) TRAP(OOB); #else diff --git a/test/wasm2c/export-names.txt b/test/wasm2c/export-names.txt index bf325a05d..5f045cb7f 100644 --- a/test/wasm2c/export-names.txt +++ b/test/wasm2c/export-names.txt @@ -241,7 +241,7 @@ static inline uint64_t checked_add_u64(uint64_t a, uint64_t b) { #if __has_builtin(__builtin_add_overflow) if (__builtin_add_overflow(a, b, &ret)) TRAP(OOB); -#elif defined(_MSC_VER) +#elif defined(_MSC_VER) && defined(_M_X64) if (_addcarry_u64(0, a, b, &ret)) TRAP(OOB); #else diff --git a/test/wasm2c/hello.txt b/test/wasm2c/hello.txt index e1aebdc92..13bd4228a 100644 --- a/test/wasm2c/hello.txt +++ b/test/wasm2c/hello.txt @@ -250,7 +250,7 @@ static inline uint64_t checked_add_u64(uint64_t a, uint64_t b) { #if __has_builtin(__builtin_add_overflow) if (__builtin_add_overflow(a, b, &ret)) TRAP(OOB); -#elif defined(_MSC_VER) +#elif defined(_MSC_VER) && defined(_M_X64) if (_addcarry_u64(0, a, b, &ret)) TRAP(OOB); #else diff --git a/test/wasm2c/minimal.txt b/test/wasm2c/minimal.txt index ea0ce47fa..c3532508c 100644 --- a/test/wasm2c/minimal.txt +++ b/test/wasm2c/minimal.txt @@ -210,7 +210,7 @@ static inline uint64_t checked_add_u64(uint64_t a, uint64_t b) { #if __has_builtin(__builtin_add_overflow) if (__builtin_add_overflow(a, b, &ret)) TRAP(OOB); -#elif defined(_MSC_VER) +#elif defined(_MSC_VER) && defined(_M_X64) if (_addcarry_u64(0, a, b, &ret)) TRAP(OOB); #else diff --git a/test/wasm2c/tail-calls.txt b/test/wasm2c/tail-calls.txt index c6088790e..e4c7ccd22 100644 --- a/test/wasm2c/tail-calls.txt +++ b/test/wasm2c/tail-calls.txt @@ -239,7 +239,7 @@ static inline uint64_t checked_add_u64(uint64_t a, uint64_t b) { #if __has_builtin(__builtin_add_overflow) if (__builtin_add_overflow(a, b, &ret)) TRAP(OOB); -#elif defined(_MSC_VER) +#elif defined(_MSC_VER) && defined(_M_X64) if (_addcarry_u64(0, a, b, &ret)) TRAP(OOB); #else