From e6574c4a9db8a0e4bee5e14a1cc52c865f56b096 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C4=8Cert=C3=ADk?= Date: Sat, 6 Jul 2024 11:14:37 -0600 Subject: [PATCH 01/26] CI: switch to micromamba, update xeus --- .github/workflows/CI.yml | 46 +++++++++++++++++++--------------------- ci/environment.yml | 3 ++- 2 files changed, 24 insertions(+), 25 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index ef534c5c6f..827ae33cf7 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -26,38 +26,36 @@ jobs: with: fetch-depth: 0 - - name: Cache conda - uses: actions/cache@v3 - env: - CACHE_NUMBER: 0 - with: - path: ~/conda_pkgs_dir - key: - ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-${{ hashFiles('ci/environment.yml') }} - - - uses: conda-incubator/setup-miniconda@v2 +# - name: Cache conda +# uses: actions/cache@v3 +# env: +# CACHE_NUMBER: 0 +# with: +# path: ~/conda_pkgs_dir +# key: +# ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-${{ hashFiles('ci/environment.yml') }} + + - uses: mamba-org/setup-micromamba@v1.8.0 with: - miniconda-version: "latest" - auto-update-conda: true environment-file: ci/environment.yml - python-version: ${{ matrix.python-version }} - use-only-tar-bz2: true + create-args: >- + python=${{ matrix.python-version }} - name: Install Windows Conda Packages if: contains(matrix.os, 'windows') shell: bash -e -l {0} - run: conda install m2-bison=3.0.4 cmake=3.21.1 + run: micromamba install m2-bison=3.0.4 m2-filesystem cmake=3.21.1 - name: Install Linux / macOS Conda Packages if: contains(matrix.os, 'ubuntu') || contains(matrix.os, 'macos') shell: bash -e -l {0} - run: conda install bison=3.4 nodejs=18 + run: micromamba install bison=3.4 nodejs=18 - - name: Conda info - shell: bash -e -l {0} - run: | - conda info - conda list +# - name: Conda info +# shell: bash -e -l {0} +# run: | +# conda info +# conda list - name: Setup Platform (Linux) if: contains(matrix.os, 'ubuntu') @@ -87,9 +85,9 @@ jobs: if: contains(matrix.os, 'windows') shell: cmd run: | - set CONDA_INSTALL_LOCN=C:\\Miniconda3 - call %CONDA_INSTALL_LOCN%\Scripts\activate.bat - call conda activate test + set MAMBA_INSTALL_LOCN=C:\\Users\runneradmin\micromamba + call %MAMBA_INSTALL_LOCN%\Scripts\activate.bat + call micromamba activate test set LFORTRAN_CMAKE_GENERATOR=Ninja set WIN=1 set MACOS=0 diff --git a/ci/environment.yml b/ci/environment.yml index b9b7fd715f..7c610f850c 100644 --- a/ci/environment.yml +++ b/ci/environment.yml @@ -7,7 +7,8 @@ dependencies: - toml - pytest - jupyter - - xeus=1.0.1 + - xeus=5.1.0 + - xeus-zmq=3.0.0 - xtl - nlohmann_json - cppzmq From eed485e2c807f610afbc1ebd75d2f1b4a6ab9b51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C4=8Cert=C3=ADk?= Date: Sat, 6 Jul 2024 11:19:56 -0600 Subject: [PATCH 02/26] Use lp --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 827ae33cf7..9c390e8818 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -87,7 +87,7 @@ jobs: run: | set MAMBA_INSTALL_LOCN=C:\\Users\runneradmin\micromamba call %MAMBA_INSTALL_LOCN%\Scripts\activate.bat - call micromamba activate test + call micromamba activate lp set LFORTRAN_CMAKE_GENERATOR=Ninja set WIN=1 set MACOS=0 From d1e230a7f27883564f9e5544120612e84f5685a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C4=8Cert=C3=ADk?= Date: Sat, 6 Jul 2024 11:22:01 -0600 Subject: [PATCH 03/26] Use the old xeus --- ci/environment.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ci/environment.yml b/ci/environment.yml index 7c610f850c..b9b7fd715f 100644 --- a/ci/environment.yml +++ b/ci/environment.yml @@ -7,8 +7,7 @@ dependencies: - toml - pytest - jupyter - - xeus=5.1.0 - - xeus-zmq=3.0.0 + - xeus=1.0.1 - xtl - nlohmann_json - cppzmq From 34613d7c60e251bce349fb3f52c145f2af929d88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C4=8Cert=C3=ADk?= Date: Sat, 6 Jul 2024 11:24:17 -0600 Subject: [PATCH 04/26] Use xonsh 0.16.0 --- ci/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/environment.yml b/ci/environment.yml index b9b7fd715f..0bd6c7e13f 100644 --- a/ci/environment.yml +++ b/ci/environment.yml @@ -12,7 +12,7 @@ dependencies: - nlohmann_json - cppzmq - jupyter_kernel_test - - xonsh + - xonsh=0.16.0 - re2c - numpy - zlib From 0c3b95b491a87507eafbe33947a49fb55479a2ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C4=8Cert=C3=ADk?= Date: Sat, 6 Jul 2024 11:39:46 -0600 Subject: [PATCH 05/26] Fix Windows test --- .github/workflows/CI.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 9c390e8818..9b7fea8dcb 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -105,9 +105,9 @@ jobs: if: contains(matrix.os, 'windows') shell: cmd run: | - set CONDA_INSTALL_LOCN=C:\\Miniconda3 - call %CONDA_INSTALL_LOCN%\Scripts\activate.bat - call conda activate test + set MAMBA_INSTALL_LOCN=C:\\Users\runneradmin\micromamba + call %MAMBA_INSTALL_LOCN%\Scripts\activate.bat + call micromamba activate lp set LFORTRAN_CMAKE_GENERATOR=Ninja set WIN=1 set MACOS=0 From d1dc5f0c9102ab882e0df59fd75b19e0859b27ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C4=8Cert=C3=ADk?= Date: Sat, 6 Jul 2024 11:47:13 -0600 Subject: [PATCH 06/26] Use latest version --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 9b7fea8dcb..3ce316912a 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -35,7 +35,7 @@ jobs: # key: # ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-${{ hashFiles('ci/environment.yml') }} - - uses: mamba-org/setup-micromamba@v1.8.0 + - uses: mamba-org/setup-micromamba@v1.9.0 with: environment-file: ci/environment.yml create-args: >- From e73253e4e4b17f0c3d874b3b17cc1876a2aa3bc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C4=8Cert=C3=ADk?= Date: Sat, 6 Jul 2024 11:50:47 -0600 Subject: [PATCH 07/26] Pin the packages --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 3ce316912a..abdd5866b8 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -49,7 +49,7 @@ jobs: - name: Install Linux / macOS Conda Packages if: contains(matrix.os, 'ubuntu') || contains(matrix.os, 'macos') shell: bash -e -l {0} - run: micromamba install bison=3.4 nodejs=18 + run: micromamba install bison=3.4 nodejs=18 xeus=1.0.1 nlohmann_json=3.9.1 # - name: Conda info # shell: bash -e -l {0} From ae166560354fb3b5e395fc471e9422e644f6a441 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C4=8Cert=C3=ADk?= Date: Sat, 6 Jul 2024 11:54:47 -0600 Subject: [PATCH 08/26] Do not upgrade installed packages --- .github/workflows/CI.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index abdd5866b8..c7a50d8f4e 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -44,12 +44,12 @@ jobs: - name: Install Windows Conda Packages if: contains(matrix.os, 'windows') shell: bash -e -l {0} - run: micromamba install m2-bison=3.0.4 m2-filesystem cmake=3.21.1 + run: micromamba install --freeze-installed m2-bison=3.0.4 m2-filesystem cmake=3.21.1 - name: Install Linux / macOS Conda Packages if: contains(matrix.os, 'ubuntu') || contains(matrix.os, 'macos') shell: bash -e -l {0} - run: micromamba install bison=3.4 nodejs=18 xeus=1.0.1 nlohmann_json=3.9.1 + run: micromamba install --freeze-installed bison=3.4 nodejs=18 # - name: Conda info # shell: bash -e -l {0} From e4fa09a6329cff6430cace0b016f49d7fc71aaa0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C4=8Cert=C3=ADk?= Date: Sat, 6 Jul 2024 11:58:09 -0600 Subject: [PATCH 09/26] List --- .github/workflows/CI.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index c7a50d8f4e..65f3043be7 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -51,11 +51,11 @@ jobs: shell: bash -e -l {0} run: micromamba install --freeze-installed bison=3.4 nodejs=18 -# - name: Conda info -# shell: bash -e -l {0} -# run: | -# conda info -# conda list + - name: Conda info + shell: bash -e -l {0} + run: | + micromamba info + micromamba list - name: Setup Platform (Linux) if: contains(matrix.os, 'ubuntu') From 81beb7c9e372a2b53d0a87500df6f8837b68d3e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C4=8Cert=C3=ADk?= Date: Sat, 6 Jul 2024 12:10:20 -0600 Subject: [PATCH 10/26] Pin packages --- ci/environment.yml | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/ci/environment.yml b/ci/environment.yml index 0bd6c7e13f..eae0a4eaff 100644 --- a/ci/environment.yml +++ b/ci/environment.yml @@ -4,19 +4,20 @@ channels: - defaults dependencies: - llvmdev=11.1.0 - - toml - - pytest - - jupyter + - toml=0.10.2 + - pytest=7.2.0 + - jupyter=1.0.0 - xeus=1.0.1 - - xtl - - nlohmann_json - - cppzmq - - jupyter_kernel_test + - xtl=0.7.4 + - nlohmann_json=3.11.3 + - cppzmq=4.7.1 + - jupyter_kernel_test=0.4.4 - xonsh=0.16.0 - - re2c - - numpy - - zlib - - ninja - - rapidjson + - re2c=2.2 + - numpy=1.23.4 + - zlib=1.2.13 + - zstd=1.5.2 + - ninja=1.11.0 + - rapidjson=1.1.0 # - bison=3.4 [not win] # - m2-bison=3.4 [win] From ba8a13ca3ffb5b04d5114f8fba2a38ba3e4471d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C4=8Cert=C3=ADk?= Date: Sat, 6 Jul 2024 12:12:20 -0600 Subject: [PATCH 11/26] Fix nlohmann_json --- ci/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/environment.yml b/ci/environment.yml index eae0a4eaff..3970b62f9f 100644 --- a/ci/environment.yml +++ b/ci/environment.yml @@ -9,7 +9,7 @@ dependencies: - jupyter=1.0.0 - xeus=1.0.1 - xtl=0.7.4 - - nlohmann_json=3.11.3 + - nlohmann_json=3.10.0 - cppzmq=4.7.1 - jupyter_kernel_test=0.4.4 - xonsh=0.16.0 From 1c77ac52adbb5603c3e3ad4c876528d302c1de96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C4=8Cert=C3=ADk?= Date: Sat, 6 Jul 2024 12:14:14 -0600 Subject: [PATCH 12/26] X --- ci/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/environment.yml b/ci/environment.yml index 3970b62f9f..d439c7b41a 100644 --- a/ci/environment.yml +++ b/ci/environment.yml @@ -9,7 +9,7 @@ dependencies: - jupyter=1.0.0 - xeus=1.0.1 - xtl=0.7.4 - - nlohmann_json=3.10.0 + - nlohmann_json=3.9.1 - cppzmq=4.7.1 - jupyter_kernel_test=0.4.4 - xonsh=0.16.0 From c8a80c3ec97bad027c539928dd0ddfb3ca33e076 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C4=8Cert=C3=ADk?= Date: Sat, 6 Jul 2024 12:16:48 -0600 Subject: [PATCH 13/26] zstd --- ci/environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/environment.yml b/ci/environment.yml index d439c7b41a..af0c0c36a8 100644 --- a/ci/environment.yml +++ b/ci/environment.yml @@ -16,7 +16,7 @@ dependencies: - re2c=2.2 - numpy=1.23.4 - zlib=1.2.13 - - zstd=1.5.2 + - zstd=1.5.6 - ninja=1.11.0 - rapidjson=1.1.0 # - bison=3.4 [not win] From 2ed3ac2dec1b87be26d1f0996cc15fd13484be81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C4=8Cert=C3=ADk?= Date: Sat, 6 Jul 2024 14:36:39 -0600 Subject: [PATCH 14/26] downgrade --- ci/environment.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ci/environment.yml b/ci/environment.yml index af0c0c36a8..4fcd733601 100644 --- a/ci/environment.yml +++ b/ci/environment.yml @@ -12,11 +12,11 @@ dependencies: - nlohmann_json=3.9.1 - cppzmq=4.7.1 - jupyter_kernel_test=0.4.4 - - xonsh=0.16.0 + - xonsh=0.13.3 - re2c=2.2 - numpy=1.23.4 - - zlib=1.2.13 - - zstd=1.5.6 + - zlib + - zstd - ninja=1.11.0 - rapidjson=1.1.0 # - bison=3.4 [not win] From e69e069b208b732e57aeb6da0ef70b8651b9e217 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C4=8Cert=C3=ADk?= Date: Sat, 6 Jul 2024 14:44:51 -0600 Subject: [PATCH 15/26] Pin zstd, zlib --- .github/workflows/CI.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 65f3043be7..94f93b834b 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -40,6 +40,8 @@ jobs: environment-file: ci/environment.yml create-args: >- python=${{ matrix.python-version }} + zstd=1.5.2 + zlib=1.2.13 - name: Install Windows Conda Packages if: contains(matrix.os, 'windows') From 9ec6d6de420cb46c314cf0f40e6a17d63bde8fd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C4=8Cert=C3=ADk?= Date: Sat, 6 Jul 2024 14:58:15 -0600 Subject: [PATCH 16/26] X --- .github/workflows/CI.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 94f93b834b..54b998c515 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -26,14 +26,14 @@ jobs: with: fetch-depth: 0 -# - name: Cache conda -# uses: actions/cache@v3 -# env: -# CACHE_NUMBER: 0 -# with: -# path: ~/conda_pkgs_dir -# key: -# ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-${{ hashFiles('ci/environment.yml') }} + - name: Cache conda + uses: actions/cache@v3 + env: + CACHE_NUMBER: 0 + with: + path: ~/conda_pkgs_dir + key: + ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-${{ hashFiles('ci/environment.yml') }} - uses: mamba-org/setup-micromamba@v1.9.0 with: From e18a15c7ba441f8022ed32432825c197ff279130 Mon Sep 17 00:00:00 2001 From: Vipul Cariappa Date: Mon, 8 Jul 2024 07:34:19 +0530 Subject: [PATCH 17/26] CI fix --- src/lpython/python_evaluator.cpp | 8 ++-- src/lpython/python_evaluator.h | 4 ++ src/lpython/tests/test_llvm.cpp | 72 ++++++++++++++++---------------- 3 files changed, 44 insertions(+), 40 deletions(-) diff --git a/src/lpython/python_evaluator.cpp b/src/lpython/python_evaluator.cpp index 836ddaad22..6e4063046d 100644 --- a/src/lpython/python_evaluator.cpp +++ b/src/lpython/python_evaluator.cpp @@ -145,11 +145,11 @@ Result PythonCompiler::evaluate( if (ASRUtils::get_FunctionType(fn)->m_return_var_type->type == ASR::ttypeType::UnsignedInteger) { uint8_t r = e->execfn(run_fn); result.type = EvalResult::unsignedInteger1; - result.u32 = r; + result.u8 = r; } else { int8_t r = e->execfn(run_fn); result.type = EvalResult::integer1; - result.i32 = r; + result.i8 = r; } } else if (return_type == "integer2") { ASR::symbol_t *fn = ASR::down_cast(symbol_table->resolve_symbol(module_name)) @@ -158,11 +158,11 @@ Result PythonCompiler::evaluate( if (ASRUtils::get_FunctionType(fn)->m_return_var_type->type == ASR::ttypeType::UnsignedInteger) { uint16_t r = e->execfn(run_fn); result.type = EvalResult::unsignedInteger2; - result.u32 = r; + result.u16 = r; } else { int16_t r = e->execfn(run_fn); result.type = EvalResult::integer2; - result.i32 = r; + result.i16 = r; } } else if (return_type == "integer4") { ASR::symbol_t *fn = ASR::down_cast(symbol_table->resolve_symbol(module_name)) diff --git a/src/lpython/python_evaluator.h b/src/lpython/python_evaluator.h index f5c4d538ec..94e96aa662 100644 --- a/src/lpython/python_evaluator.h +++ b/src/lpython/python_evaluator.h @@ -55,6 +55,10 @@ class PythonCompiler none } type; union { + int32_t i8; + int64_t i16; + uint32_t u8; + uint64_t u16; int32_t i32; int64_t i64; uint32_t u32; diff --git a/src/lpython/tests/test_llvm.cpp b/src/lpython/tests/test_llvm.cpp index 945f77c72e..773268cc73 100644 --- a/src/lpython/tests/test_llvm.cpp +++ b/src/lpython/tests/test_llvm.cpp @@ -981,32 +981,32 @@ TEST_CASE("PythonCompiler i8 expressions") { r = e.evaluate2("i8(1)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::integer1); - CHECK(r.result.i32 == 1); + CHECK(r.result.i8 == 1); r = e.evaluate2("i8(1) + i8(2)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::integer1); - CHECK(r.result.i32 == 3); + CHECK(r.result.i8 == 3); r = e.evaluate2("i8(1) - i8(2)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::integer1); - CHECK(r.result.i32 == -1); + CHECK(r.result.i8 == -1); r = e.evaluate2("i8(1) * i8(2)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::integer1); - CHECK(r.result.i32 == 2); + CHECK(r.result.i8 == 2); r = e.evaluate2("i8(3) ** i8(3)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::integer1); - CHECK(r.result.i32 == 27); + CHECK(r.result.i8 == 27); r = e.evaluate2("i8(4) // i8(2)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::integer1); - CHECK(r.result.i32 == 2); + CHECK(r.result.i8 == 2); r = e.evaluate2("i8(4) / i8(2)"); CHECK(r.ok); @@ -1033,7 +1033,7 @@ TEST_CASE("PythonCompiler i8 declaration") { r = e.evaluate2("i"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::integer1); - CHECK(r.result.i32 == 5); + CHECK(r.result.i8 == 5); r = e.evaluate2("j: i8 = i8(9)"); CHECK(r.ok); @@ -1041,12 +1041,12 @@ TEST_CASE("PythonCompiler i8 declaration") { r = e.evaluate2("j"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::integer1); - CHECK(r.result.i32 == 9); + CHECK(r.result.i8 == 9); r = e.evaluate2("i + j"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::integer1); - CHECK(r.result.i32 == 14); + CHECK(r.result.i8 == 14); } TEST_CASE("PythonCompiler u8 expressions") { @@ -1062,32 +1062,32 @@ TEST_CASE("PythonCompiler u8 expressions") { r = e.evaluate2("u8(1)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::unsignedInteger1); - CHECK(r.result.u32 == 1); + CHECK(r.result.u8 == 1); r = e.evaluate2("u8(1) + u8(2)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::unsignedInteger1); - CHECK(r.result.u32 == 3); + CHECK(r.result.u8 == 3); r = e.evaluate2("u8(20) - u8(10)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::unsignedInteger1); - CHECK(r.result.u32 == 10); + CHECK(r.result.u8 == 10); r = e.evaluate2("u8(1) * u8(2)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::unsignedInteger1); - CHECK(r.result.u32 == 2); + CHECK(r.result.u8 == 2); r = e.evaluate2("u8(3) ** u8(3)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::unsignedInteger1); - CHECK(r.result.u32 == 27); + CHECK(r.result.u8 == 27); r = e.evaluate2("u8(4) // u8(2)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::unsignedInteger1); - CHECK(r.result.u32 == 2); + CHECK(r.result.u8 == 2); r = e.evaluate2("u8(4) / u8(2)"); CHECK(r.ok); @@ -1114,7 +1114,7 @@ TEST_CASE("PythonCompiler u8 declaration") { r = e.evaluate2("i"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::unsignedInteger1); - CHECK(r.result.u32 == 5); + CHECK(r.result.u8 == 5); r = e.evaluate2("j: u8 = u8(9)"); CHECK(r.ok); @@ -1122,12 +1122,12 @@ TEST_CASE("PythonCompiler u8 declaration") { r = e.evaluate2("j"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::unsignedInteger1); - CHECK(r.result.u32 == 9); + CHECK(r.result.u8 == 9); r = e.evaluate2("i * j"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::unsignedInteger1); - CHECK(r.result.u32 == 45); + CHECK(r.result.u8 == 45); } TEST_CASE("PythonCompiler i16 expressions") { @@ -1143,32 +1143,32 @@ TEST_CASE("PythonCompiler i16 expressions") { r = e.evaluate2("i16(1)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::integer2); - CHECK(r.result.i32 == 1); + CHECK(r.result.i16 == 1); r = e.evaluate2("i16(1) + i16(2)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::integer2); - CHECK(r.result.i32 == 3); + CHECK(r.result.i16 == 3); r = e.evaluate2("i16(1) - i16(2)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::integer2); - CHECK(r.result.i32 == -1); + CHECK(r.result.i16 == -1); r = e.evaluate2("i16(1) * i16(2)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::integer2); - CHECK(r.result.i32 == 2); + CHECK(r.result.i16 == 2); r = e.evaluate2("i16(3) ** i16(3)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::integer2); - CHECK(r.result.i32 == 27); + CHECK(r.result.i16 == 27); r = e.evaluate2("i16(4) // i16(2)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::integer2); - CHECK(r.result.i32 == 2); + CHECK(r.result.i16 == 2); r = e.evaluate2("i16(4) / i16(2)"); CHECK(r.ok); @@ -1195,7 +1195,7 @@ TEST_CASE("PythonCompiler i16 declaration") { r = e.evaluate2("i"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::integer2); - CHECK(r.result.i32 == 5); + CHECK(r.result.i16 == 5); r = e.evaluate2("j: i16 = i16(9)"); CHECK(r.ok); @@ -1203,12 +1203,12 @@ TEST_CASE("PythonCompiler i16 declaration") { r = e.evaluate2("j"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::integer2); - CHECK(r.result.i32 == 9); + CHECK(r.result.i16 == 9); r = e.evaluate2("i + j"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::integer2); - CHECK(r.result.i32 == 14); + CHECK(r.result.i16 == 14); } TEST_CASE("PythonCompiler u16 expressions") { @@ -1224,32 +1224,32 @@ TEST_CASE("PythonCompiler u16 expressions") { r = e.evaluate2("u16(1)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::unsignedInteger2); - CHECK(r.result.u32 == 1); + CHECK(r.result.u16 == 1); r = e.evaluate2("u16(1) + u16(2)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::unsignedInteger2); - CHECK(r.result.u32 == 3); + CHECK(r.result.u16 == 3); r = e.evaluate2("u16(20) - u16(10)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::unsignedInteger2); - CHECK(r.result.u32 == 10); + CHECK(r.result.u16 == 10); r = e.evaluate2("u16(1) * u16(2)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::unsignedInteger2); - CHECK(r.result.u32 == 2); + CHECK(r.result.u16 == 2); r = e.evaluate2("u16(3) ** u16(3)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::unsignedInteger2); - CHECK(r.result.u32 == 27); + CHECK(r.result.u16 == 27); r = e.evaluate2("u16(4) // u16(2)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::unsignedInteger2); - CHECK(r.result.u32 == 2); + CHECK(r.result.u16 == 2); r = e.evaluate2("u16(4) / u16(2)"); CHECK(r.ok); @@ -1276,7 +1276,7 @@ TEST_CASE("PythonCompiler u16 declaration") { r = e.evaluate2("i"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::unsignedInteger2); - CHECK(r.result.u32 == 5); + CHECK(r.result.u16 == 5); r = e.evaluate2("j: u16 = u16(9)"); CHECK(r.ok); @@ -1284,12 +1284,12 @@ TEST_CASE("PythonCompiler u16 declaration") { r = e.evaluate2("j"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::unsignedInteger2); - CHECK(r.result.u32 == 9); + CHECK(r.result.u16 == 9); r = e.evaluate2("i * j"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::unsignedInteger2); - CHECK(r.result.u32 == 45); + CHECK(r.result.u16 == 45); } TEST_CASE("PythonCompiler boolean expressions") { From 7e1367349438e4599133649675127cd975f28dc7 Mon Sep 17 00:00:00 2001 From: Vipul Cariappa Date: Mon, 8 Jul 2024 07:37:19 +0530 Subject: [PATCH 18/26] fix . --- src/bin/lpython.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/bin/lpython.cpp b/src/bin/lpython.cpp index 43649c57b5..bd0782608f 100644 --- a/src/bin/lpython.cpp +++ b/src/bin/lpython.cpp @@ -917,13 +917,13 @@ int interactive_python_repl( case (LCompilers::PythonCompiler::EvalResult::integer1) : { if (verbose) std::cout << "Return type: i8" << std::endl; if (verbose) section("Result:"); - std::cout << r.i32 << std::endl; + std::cout << r.i8 << std::endl; break; } case (LCompilers::PythonCompiler::EvalResult::integer2) : { if (verbose) std::cout << "Return type: i16" << std::endl; if (verbose) section("Result:"); - std::cout << r.i64 << std::endl; + std::cout << r.i16 << std::endl; break; } case (LCompilers::PythonCompiler::EvalResult::integer4) : { @@ -941,13 +941,13 @@ int interactive_python_repl( case (LCompilers::PythonCompiler::EvalResult::unsignedInteger1) : { if (verbose) std::cout << "Return type: u8" << std::endl; if (verbose) section("Result:"); - std::cout << r.u32 << std::endl; + std::cout << r.u8 << std::endl; break; } case (LCompilers::PythonCompiler::EvalResult::unsignedInteger2) : { if (verbose) std::cout << "Return type: u16" << std::endl; if (verbose) section("Result:"); - std::cout << r.u64 << std::endl; + std::cout << r.u16 << std::endl; break; } case (LCompilers::PythonCompiler::EvalResult::unsignedInteger4) : { From 797f644b9307de9b72c6eb7b7eae71a3028e8d7c Mon Sep 17 00:00:00 2001 From: Vipul Cariappa Date: Mon, 8 Jul 2024 07:45:37 +0530 Subject: [PATCH 19/26] fix . --- src/lpython/tests/test_llvm.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lpython/tests/test_llvm.cpp b/src/lpython/tests/test_llvm.cpp index 773268cc73..9ec924e69c 100644 --- a/src/lpython/tests/test_llvm.cpp +++ b/src/lpython/tests/test_llvm.cpp @@ -991,7 +991,7 @@ TEST_CASE("PythonCompiler i8 expressions") { r = e.evaluate2("i8(1) - i8(2)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::integer1); - CHECK(r.result.i8 == -1); + CHECK(r.result.i8 == (int8_t)-1); r = e.evaluate2("i8(1) * i8(2)"); CHECK(r.ok); @@ -1153,7 +1153,7 @@ TEST_CASE("PythonCompiler i16 expressions") { r = e.evaluate2("i16(1) - i16(2)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::integer2); - CHECK(r.result.i16 == -1); + CHECK(r.result.i16 == (int16_t)-1); r = e.evaluate2("i16(1) * i16(2)"); CHECK(r.ok); From 69b50d1c7087baa961241777cb29819fafb00568 Mon Sep 17 00:00:00 2001 From: Vipul Cariappa Date: Mon, 8 Jul 2024 15:01:03 +0530 Subject: [PATCH 20/26] . --- .github/workflows/CI.yml | 6 +++--- ci/environment.yml | 23 +++++++++++------------ 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 54b998c515..e98542473e 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -40,13 +40,13 @@ jobs: environment-file: ci/environment.yml create-args: >- python=${{ matrix.python-version }} - zstd=1.5.2 - zlib=1.2.13 + cmake=3.21.1 + clang - name: Install Windows Conda Packages if: contains(matrix.os, 'windows') shell: bash -e -l {0} - run: micromamba install --freeze-installed m2-bison=3.0.4 m2-filesystem cmake=3.21.1 + run: micromamba install --freeze-installed m2-bison=3.0.4 m2-filesystem - name: Install Linux / macOS Conda Packages if: contains(matrix.os, 'ubuntu') || contains(matrix.os, 'macos') diff --git a/ci/environment.yml b/ci/environment.yml index 4fcd733601..05e00cbfa9 100644 --- a/ci/environment.yml +++ b/ci/environment.yml @@ -4,20 +4,19 @@ channels: - defaults dependencies: - llvmdev=11.1.0 - - toml=0.10.2 - - pytest=7.2.0 - - jupyter=1.0.0 - - xeus=1.0.1 - - xtl=0.7.4 - - nlohmann_json=3.9.1 - - cppzmq=4.7.1 - - jupyter_kernel_test=0.4.4 + - xeus=5.1.0 + - xeus-zmq=3.0.0 - xonsh=0.13.3 - - re2c=2.2 - - numpy=1.23.4 + - rapidjson + - nlohmann_json + - toml + - pytest + - jupyter + - jupyter_kernel_test + - re2c + - numpy - zlib - zstd - - ninja=1.11.0 - - rapidjson=1.1.0 + - ninja # - bison=3.4 [not win] # - m2-bison=3.4 [win] From 8f709d1d26c74c4d69bd5e9f26951819e217c3f8 Mon Sep 17 00:00:00 2001 From: Vipul Cariappa Date: Mon, 8 Jul 2024 15:05:16 +0530 Subject: [PATCH 21/26] . --- ci/build.xsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/build.xsh b/ci/build.xsh index 449d89543f..df17b49db8 100755 --- a/ci/build.xsh +++ b/ci/build.xsh @@ -53,7 +53,7 @@ cd test-bld # compiled in Release mode and we get link failures if we mix and match build # modes: BUILD_TYPE = "Release" -cmake -G $LFORTRAN_CMAKE_GENERATOR -DCMAKE_VERBOSE_MAKEFILE=ON -DWITH_LLVM=yes -DWITH_LSP=yes -DWITH_XEUS=yes -DCMAKE_PREFIX_PATH=$CONDA_PREFIX -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX -DWITH_LFORTRAN_BINARY_MODFILES=no -DCMAKE_BUILD_TYPE=@(BUILD_TYPE) -DWITH_RUNTIME_STACKTRACE=$ENABLE_RUNTIME_STACKTRACE .. +cmake -G $LFORTRAN_CMAKE_GENERATOR -D CMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_VERBOSE_MAKEFILE=ON -DWITH_LLVM=yes -DWITH_LSP=yes -DWITH_XEUS=yes -DCMAKE_PREFIX_PATH=$CONDA_PREFIX -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX -DWITH_LFORTRAN_BINARY_MODFILES=no -DCMAKE_BUILD_TYPE=@(BUILD_TYPE) -DWITH_RUNTIME_STACKTRACE=$ENABLE_RUNTIME_STACKTRACE .. cmake --build . --target install -j16 ./src/lpython/tests/test_lpython #./src/bin/lpython < ../src/bin/example_input.txt From f8ed783f3c7dbef6eba899de587f8d64cad916dc Mon Sep 17 00:00:00 2001 From: Vipul Cariappa Date: Mon, 8 Jul 2024 15:12:23 +0530 Subject: [PATCH 22/26] . --- .github/workflows/CI.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index e98542473e..7d2399b72a 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -42,6 +42,7 @@ jobs: python=${{ matrix.python-version }} cmake=3.21.1 clang + clangxx - name: Install Windows Conda Packages if: contains(matrix.os, 'windows') From 81918f1d6bf626db1cf838884d6536c137d735f7 Mon Sep 17 00:00:00 2001 From: Vipul Cariappa Date: Mon, 8 Jul 2024 15:19:22 +0530 Subject: [PATCH 23/26] . --- .github/workflows/CI.yml | 4 ++-- ci/build.xsh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 7d2399b72a..aa14e2350d 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -41,8 +41,8 @@ jobs: create-args: >- python=${{ matrix.python-version }} cmake=3.21.1 - clang - clangxx + gcc + gxx - name: Install Windows Conda Packages if: contains(matrix.os, 'windows') diff --git a/ci/build.xsh b/ci/build.xsh index df17b49db8..7b4614a6f2 100755 --- a/ci/build.xsh +++ b/ci/build.xsh @@ -53,7 +53,7 @@ cd test-bld # compiled in Release mode and we get link failures if we mix and match build # modes: BUILD_TYPE = "Release" -cmake -G $LFORTRAN_CMAKE_GENERATOR -D CMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_VERBOSE_MAKEFILE=ON -DWITH_LLVM=yes -DWITH_LSP=yes -DWITH_XEUS=yes -DCMAKE_PREFIX_PATH=$CONDA_PREFIX -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX -DWITH_LFORTRAN_BINARY_MODFILES=no -DCMAKE_BUILD_TYPE=@(BUILD_TYPE) -DWITH_RUNTIME_STACKTRACE=$ENABLE_RUNTIME_STACKTRACE .. +cmake -G $LFORTRAN_CMAKE_GENERATOR -D CMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_VERBOSE_MAKEFILE=ON -DWITH_LLVM=yes -DWITH_LSP=yes -DWITH_XEUS=yes -DCMAKE_PREFIX_PATH=$CONDA_PREFIX -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX -DWITH_LFORTRAN_BINARY_MODFILES=no -DCMAKE_BUILD_TYPE=@(BUILD_TYPE) -DWITH_RUNTIME_STACKTRACE=$ENABLE_RUNTIME_STACKTRACE .. cmake --build . --target install -j16 ./src/lpython/tests/test_lpython #./src/bin/lpython < ../src/bin/example_input.txt From 5920f1a891f64bd9030737d2804103f12246899d Mon Sep 17 00:00:00 2001 From: Vipul Cariappa Date: Mon, 8 Jul 2024 15:28:13 +0530 Subject: [PATCH 24/26] . --- .github/workflows/CI.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index aa14e2350d..2532d4e350 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -41,8 +41,6 @@ jobs: create-args: >- python=${{ matrix.python-version }} cmake=3.21.1 - gcc - gxx - name: Install Windows Conda Packages if: contains(matrix.os, 'windows') From 127955535f27aed1b9d04bc4fa57d9b0e6497e39 Mon Sep 17 00:00:00 2001 From: Vipul Cariappa Date: Mon, 8 Jul 2024 15:38:58 +0530 Subject: [PATCH 25/26] in previous commit I tested by changing compiler to gcc, still fails in macOS --- ci/build.xsh | 2 +- src/lpython/python_evaluator.cpp | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/ci/build.xsh b/ci/build.xsh index 7b4614a6f2..449d89543f 100755 --- a/ci/build.xsh +++ b/ci/build.xsh @@ -53,7 +53,7 @@ cd test-bld # compiled in Release mode and we get link failures if we mix and match build # modes: BUILD_TYPE = "Release" -cmake -G $LFORTRAN_CMAKE_GENERATOR -D CMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_VERBOSE_MAKEFILE=ON -DWITH_LLVM=yes -DWITH_LSP=yes -DWITH_XEUS=yes -DCMAKE_PREFIX_PATH=$CONDA_PREFIX -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX -DWITH_LFORTRAN_BINARY_MODFILES=no -DCMAKE_BUILD_TYPE=@(BUILD_TYPE) -DWITH_RUNTIME_STACKTRACE=$ENABLE_RUNTIME_STACKTRACE .. +cmake -G $LFORTRAN_CMAKE_GENERATOR -DCMAKE_VERBOSE_MAKEFILE=ON -DWITH_LLVM=yes -DWITH_LSP=yes -DWITH_XEUS=yes -DCMAKE_PREFIX_PATH=$CONDA_PREFIX -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX -DWITH_LFORTRAN_BINARY_MODFILES=no -DCMAKE_BUILD_TYPE=@(BUILD_TYPE) -DWITH_RUNTIME_STACKTRACE=$ENABLE_RUNTIME_STACKTRACE .. cmake --build . --target install -j16 ./src/lpython/tests/test_lpython #./src/bin/lpython < ../src/bin/example_input.txt diff --git a/src/lpython/python_evaluator.cpp b/src/lpython/python_evaluator.cpp index 6e4063046d..cf4c84f8b9 100644 --- a/src/lpython/python_evaluator.cpp +++ b/src/lpython/python_evaluator.cpp @@ -143,11 +143,11 @@ Result PythonCompiler::evaluate( ->m_symtab->get_symbol(run_fn); LCOMPILERS_ASSERT(fn) if (ASRUtils::get_FunctionType(fn)->m_return_var_type->type == ASR::ttypeType::UnsignedInteger) { - uint8_t r = e->execfn(run_fn); + uint8_t r = e->execfn(run_fn); result.type = EvalResult::unsignedInteger1; result.u8 = r; } else { - int8_t r = e->execfn(run_fn); + int8_t r = e->execfn(run_fn); result.type = EvalResult::integer1; result.i8 = r; } @@ -156,11 +156,11 @@ Result PythonCompiler::evaluate( ->m_symtab->get_symbol(run_fn); LCOMPILERS_ASSERT(fn) if (ASRUtils::get_FunctionType(fn)->m_return_var_type->type == ASR::ttypeType::UnsignedInteger) { - uint16_t r = e->execfn(run_fn); + uint16_t r = e->execfn(run_fn); result.type = EvalResult::unsignedInteger2; result.u16 = r; } else { - int16_t r = e->execfn(run_fn); + int16_t r = e->execfn(run_fn); result.type = EvalResult::integer2; result.i16 = r; } From b1700b23047905881e98f91817b877e548e4f77c Mon Sep 17 00:00:00 2001 From: Vipul Cariappa Date: Mon, 8 Jul 2024 15:50:28 +0530 Subject: [PATCH 26/26] fix --- integration_tests/CMakeLists.txt | 2 +- src/bin/lpython.cpp | 8 ++-- src/lpython/python_evaluator.cpp | 8 ++-- src/lpython/python_evaluator.h | 4 -- src/lpython/tests/test_llvm.cpp | 72 ++++++++++++++++---------------- 5 files changed, 45 insertions(+), 49 deletions(-) diff --git a/integration_tests/CMakeLists.txt b/integration_tests/CMakeLists.txt index f6396d0be6..caad1f5c96 100644 --- a/integration_tests/CMakeLists.txt +++ b/integration_tests/CMakeLists.txt @@ -773,7 +773,7 @@ RUN(NAME test_logical_compare LABELS cpython llvm llvm_jit) # TODO: Ad RUN(NAME test_logical_assignment LABELS cpython llvm llvm_jit) # TODO: Add C backend after fixing issue #2708 RUN(NAME vec_01 LABELS cpython llvm llvm_jit c NOFAST) RUN(NAME test_str_comparison LABELS cpython llvm llvm_jit c wasm) -RUN(NAME test_bit_length LABELS cpython llvm llvm_jit c) +RUN(NAME test_bit_length LABELS cpython c) # FIXME: This test fails on llvm & llvm_jit RUN(NAME str_to_list_cast LABELS cpython llvm llvm_jit c) RUN(NAME cast_01 LABELS cpython llvm llvm_jit c) RUN(NAME cast_02 LABELS cpython llvm llvm_jit c) diff --git a/src/bin/lpython.cpp b/src/bin/lpython.cpp index bd0782608f..43649c57b5 100644 --- a/src/bin/lpython.cpp +++ b/src/bin/lpython.cpp @@ -917,13 +917,13 @@ int interactive_python_repl( case (LCompilers::PythonCompiler::EvalResult::integer1) : { if (verbose) std::cout << "Return type: i8" << std::endl; if (verbose) section("Result:"); - std::cout << r.i8 << std::endl; + std::cout << r.i32 << std::endl; break; } case (LCompilers::PythonCompiler::EvalResult::integer2) : { if (verbose) std::cout << "Return type: i16" << std::endl; if (verbose) section("Result:"); - std::cout << r.i16 << std::endl; + std::cout << r.i64 << std::endl; break; } case (LCompilers::PythonCompiler::EvalResult::integer4) : { @@ -941,13 +941,13 @@ int interactive_python_repl( case (LCompilers::PythonCompiler::EvalResult::unsignedInteger1) : { if (verbose) std::cout << "Return type: u8" << std::endl; if (verbose) section("Result:"); - std::cout << r.u8 << std::endl; + std::cout << r.u32 << std::endl; break; } case (LCompilers::PythonCompiler::EvalResult::unsignedInteger2) : { if (verbose) std::cout << "Return type: u16" << std::endl; if (verbose) section("Result:"); - std::cout << r.u16 << std::endl; + std::cout << r.u64 << std::endl; break; } case (LCompilers::PythonCompiler::EvalResult::unsignedInteger4) : { diff --git a/src/lpython/python_evaluator.cpp b/src/lpython/python_evaluator.cpp index cf4c84f8b9..b8bc2ee3ed 100644 --- a/src/lpython/python_evaluator.cpp +++ b/src/lpython/python_evaluator.cpp @@ -145,11 +145,11 @@ Result PythonCompiler::evaluate( if (ASRUtils::get_FunctionType(fn)->m_return_var_type->type == ASR::ttypeType::UnsignedInteger) { uint8_t r = e->execfn(run_fn); result.type = EvalResult::unsignedInteger1; - result.u8 = r; + result.u32 = r; } else { int8_t r = e->execfn(run_fn); result.type = EvalResult::integer1; - result.i8 = r; + result.i32 = r; } } else if (return_type == "integer2") { ASR::symbol_t *fn = ASR::down_cast(symbol_table->resolve_symbol(module_name)) @@ -158,11 +158,11 @@ Result PythonCompiler::evaluate( if (ASRUtils::get_FunctionType(fn)->m_return_var_type->type == ASR::ttypeType::UnsignedInteger) { uint16_t r = e->execfn(run_fn); result.type = EvalResult::unsignedInteger2; - result.u16 = r; + result.u32 = r; } else { int16_t r = e->execfn(run_fn); result.type = EvalResult::integer2; - result.i16 = r; + result.i32 = r; } } else if (return_type == "integer4") { ASR::symbol_t *fn = ASR::down_cast(symbol_table->resolve_symbol(module_name)) diff --git a/src/lpython/python_evaluator.h b/src/lpython/python_evaluator.h index 94e96aa662..f5c4d538ec 100644 --- a/src/lpython/python_evaluator.h +++ b/src/lpython/python_evaluator.h @@ -55,10 +55,6 @@ class PythonCompiler none } type; union { - int32_t i8; - int64_t i16; - uint32_t u8; - uint64_t u16; int32_t i32; int64_t i64; uint32_t u32; diff --git a/src/lpython/tests/test_llvm.cpp b/src/lpython/tests/test_llvm.cpp index 9ec924e69c..945f77c72e 100644 --- a/src/lpython/tests/test_llvm.cpp +++ b/src/lpython/tests/test_llvm.cpp @@ -981,32 +981,32 @@ TEST_CASE("PythonCompiler i8 expressions") { r = e.evaluate2("i8(1)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::integer1); - CHECK(r.result.i8 == 1); + CHECK(r.result.i32 == 1); r = e.evaluate2("i8(1) + i8(2)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::integer1); - CHECK(r.result.i8 == 3); + CHECK(r.result.i32 == 3); r = e.evaluate2("i8(1) - i8(2)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::integer1); - CHECK(r.result.i8 == (int8_t)-1); + CHECK(r.result.i32 == -1); r = e.evaluate2("i8(1) * i8(2)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::integer1); - CHECK(r.result.i8 == 2); + CHECK(r.result.i32 == 2); r = e.evaluate2("i8(3) ** i8(3)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::integer1); - CHECK(r.result.i8 == 27); + CHECK(r.result.i32 == 27); r = e.evaluate2("i8(4) // i8(2)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::integer1); - CHECK(r.result.i8 == 2); + CHECK(r.result.i32 == 2); r = e.evaluate2("i8(4) / i8(2)"); CHECK(r.ok); @@ -1033,7 +1033,7 @@ TEST_CASE("PythonCompiler i8 declaration") { r = e.evaluate2("i"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::integer1); - CHECK(r.result.i8 == 5); + CHECK(r.result.i32 == 5); r = e.evaluate2("j: i8 = i8(9)"); CHECK(r.ok); @@ -1041,12 +1041,12 @@ TEST_CASE("PythonCompiler i8 declaration") { r = e.evaluate2("j"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::integer1); - CHECK(r.result.i8 == 9); + CHECK(r.result.i32 == 9); r = e.evaluate2("i + j"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::integer1); - CHECK(r.result.i8 == 14); + CHECK(r.result.i32 == 14); } TEST_CASE("PythonCompiler u8 expressions") { @@ -1062,32 +1062,32 @@ TEST_CASE("PythonCompiler u8 expressions") { r = e.evaluate2("u8(1)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::unsignedInteger1); - CHECK(r.result.u8 == 1); + CHECK(r.result.u32 == 1); r = e.evaluate2("u8(1) + u8(2)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::unsignedInteger1); - CHECK(r.result.u8 == 3); + CHECK(r.result.u32 == 3); r = e.evaluate2("u8(20) - u8(10)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::unsignedInteger1); - CHECK(r.result.u8 == 10); + CHECK(r.result.u32 == 10); r = e.evaluate2("u8(1) * u8(2)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::unsignedInteger1); - CHECK(r.result.u8 == 2); + CHECK(r.result.u32 == 2); r = e.evaluate2("u8(3) ** u8(3)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::unsignedInteger1); - CHECK(r.result.u8 == 27); + CHECK(r.result.u32 == 27); r = e.evaluate2("u8(4) // u8(2)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::unsignedInteger1); - CHECK(r.result.u8 == 2); + CHECK(r.result.u32 == 2); r = e.evaluate2("u8(4) / u8(2)"); CHECK(r.ok); @@ -1114,7 +1114,7 @@ TEST_CASE("PythonCompiler u8 declaration") { r = e.evaluate2("i"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::unsignedInteger1); - CHECK(r.result.u8 == 5); + CHECK(r.result.u32 == 5); r = e.evaluate2("j: u8 = u8(9)"); CHECK(r.ok); @@ -1122,12 +1122,12 @@ TEST_CASE("PythonCompiler u8 declaration") { r = e.evaluate2("j"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::unsignedInteger1); - CHECK(r.result.u8 == 9); + CHECK(r.result.u32 == 9); r = e.evaluate2("i * j"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::unsignedInteger1); - CHECK(r.result.u8 == 45); + CHECK(r.result.u32 == 45); } TEST_CASE("PythonCompiler i16 expressions") { @@ -1143,32 +1143,32 @@ TEST_CASE("PythonCompiler i16 expressions") { r = e.evaluate2("i16(1)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::integer2); - CHECK(r.result.i16 == 1); + CHECK(r.result.i32 == 1); r = e.evaluate2("i16(1) + i16(2)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::integer2); - CHECK(r.result.i16 == 3); + CHECK(r.result.i32 == 3); r = e.evaluate2("i16(1) - i16(2)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::integer2); - CHECK(r.result.i16 == (int16_t)-1); + CHECK(r.result.i32 == -1); r = e.evaluate2("i16(1) * i16(2)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::integer2); - CHECK(r.result.i16 == 2); + CHECK(r.result.i32 == 2); r = e.evaluate2("i16(3) ** i16(3)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::integer2); - CHECK(r.result.i16 == 27); + CHECK(r.result.i32 == 27); r = e.evaluate2("i16(4) // i16(2)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::integer2); - CHECK(r.result.i16 == 2); + CHECK(r.result.i32 == 2); r = e.evaluate2("i16(4) / i16(2)"); CHECK(r.ok); @@ -1195,7 +1195,7 @@ TEST_CASE("PythonCompiler i16 declaration") { r = e.evaluate2("i"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::integer2); - CHECK(r.result.i16 == 5); + CHECK(r.result.i32 == 5); r = e.evaluate2("j: i16 = i16(9)"); CHECK(r.ok); @@ -1203,12 +1203,12 @@ TEST_CASE("PythonCompiler i16 declaration") { r = e.evaluate2("j"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::integer2); - CHECK(r.result.i16 == 9); + CHECK(r.result.i32 == 9); r = e.evaluate2("i + j"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::integer2); - CHECK(r.result.i16 == 14); + CHECK(r.result.i32 == 14); } TEST_CASE("PythonCompiler u16 expressions") { @@ -1224,32 +1224,32 @@ TEST_CASE("PythonCompiler u16 expressions") { r = e.evaluate2("u16(1)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::unsignedInteger2); - CHECK(r.result.u16 == 1); + CHECK(r.result.u32 == 1); r = e.evaluate2("u16(1) + u16(2)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::unsignedInteger2); - CHECK(r.result.u16 == 3); + CHECK(r.result.u32 == 3); r = e.evaluate2("u16(20) - u16(10)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::unsignedInteger2); - CHECK(r.result.u16 == 10); + CHECK(r.result.u32 == 10); r = e.evaluate2("u16(1) * u16(2)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::unsignedInteger2); - CHECK(r.result.u16 == 2); + CHECK(r.result.u32 == 2); r = e.evaluate2("u16(3) ** u16(3)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::unsignedInteger2); - CHECK(r.result.u16 == 27); + CHECK(r.result.u32 == 27); r = e.evaluate2("u16(4) // u16(2)"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::unsignedInteger2); - CHECK(r.result.u16 == 2); + CHECK(r.result.u32 == 2); r = e.evaluate2("u16(4) / u16(2)"); CHECK(r.ok); @@ -1276,7 +1276,7 @@ TEST_CASE("PythonCompiler u16 declaration") { r = e.evaluate2("i"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::unsignedInteger2); - CHECK(r.result.u16 == 5); + CHECK(r.result.u32 == 5); r = e.evaluate2("j: u16 = u16(9)"); CHECK(r.ok); @@ -1284,12 +1284,12 @@ TEST_CASE("PythonCompiler u16 declaration") { r = e.evaluate2("j"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::unsignedInteger2); - CHECK(r.result.u16 == 9); + CHECK(r.result.u32 == 9); r = e.evaluate2("i * j"); CHECK(r.ok); CHECK(r.result.type == PythonCompiler::EvalResult::unsignedInteger2); - CHECK(r.result.u16 == 45); + CHECK(r.result.u32 == 45); } TEST_CASE("PythonCompiler boolean expressions") {