From 41b91f634e666cc006bc937d73c066452a6b7a9c Mon Sep 17 00:00:00 2001 From: hankluo6 Date: Sun, 12 May 2024 20:47:06 -0500 Subject: [PATCH 1/3] Fix logical comparsion for string --- src/libasr/codegen/asr_to_llvm.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libasr/codegen/asr_to_llvm.cpp b/src/libasr/codegen/asr_to_llvm.cpp index 832d58f63f..bd267d88d5 100644 --- a/src/libasr/codegen/asr_to_llvm.cpp +++ b/src/libasr/codegen/asr_to_llvm.cpp @@ -5897,7 +5897,7 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor } cond = builder->CreateFCmpUEQ(left_val, zero); } else if (ASRUtils::is_character(*x.m_type)) { - zero = llvm::Constant::getNullValue(character_type); + zero = builder->CreateGlobalStringPtr(""); cond = lfortran_str_cmp(left_val, zero, "_lpython_str_compare_eq"); } else if (ASRUtils::is_logical(*x.m_type)) { zero = llvm::ConstantInt::get(context, From faefbf50f7e6fedf55446c831fcc33158438972b Mon Sep 17 00:00:00 2001 From: hankluo6 Date: Sun, 12 May 2024 20:58:06 -0500 Subject: [PATCH 2/3] Uncomment test --- integration_tests/test_logical_assignment.py | 9 +++--- integration_tests/test_logical_compare.py | 29 ++++++++++---------- 2 files changed, 18 insertions(+), 20 deletions(-) diff --git a/integration_tests/test_logical_assignment.py b/integration_tests/test_logical_assignment.py index 152aa0c822..86c03a8d2b 100644 --- a/integration_tests/test_logical_assignment.py +++ b/integration_tests/test_logical_assignment.py @@ -2,11 +2,10 @@ def test_logical_assignment(): - # Can be uncommented after fixing the segfault - # _LPYTHON: str = "LPython" - # s_var: str = "" or _LPYTHON - # assert s_var == "LPython" - # print(s_var) + _LPYTHON: str = "LPython" + s_var: str = "" or _LPYTHON + assert s_var == "LPython" + print(s_var) _MAX_VAL: i32 = 100 i_var: i32 = 0 and 100 diff --git a/integration_tests/test_logical_compare.py b/integration_tests/test_logical_compare.py index 497718a13e..538598c29a 100644 --- a/integration_tests/test_logical_compare.py +++ b/integration_tests/test_logical_compare.py @@ -102,28 +102,27 @@ def test_logical_compare_variable(): print(f_a - 3.0 and f_a + 3.0 or f_b - 3.0 and f_b + 3.0) assert (f_a - 3.0 and f_a + 3.0 or f_b - 3.0 and f_b + 3.0) == 4.67 - # Can be uncommented after fixing the segfault # Strings - # s_a: str = "a" - # s_b: str = "b" + s_a: str = "a" + s_b: str = "b" - # print(s_a or s_b) - # assert (s_a or s_b) == s_a + print(s_a or s_b) + assert (s_a or s_b) == s_a - # print(s_a and s_b) - # assert (s_a and s_b) == s_b + print(s_a and s_b) + assert (s_a and s_b) == s_b - # print(s_a + s_b or s_b + s_a) - # assert (s_a + s_b or s_b + s_a) == "ab" + print(s_a + s_b or s_b + s_a) + assert (s_a + s_b or s_b + s_a) == "ab" - # print(s_a[0] or s_b[-1]) - # assert (s_a[0] or s_b[-1]) == "a" + print(s_a[0] or s_b[-1]) + assert (s_a[0] or s_b[-1]) == "a" - # print(s_a[0] and s_b[-1]) - # assert (s_a[0] and s_b[-1]) == "b" + print(s_a[0] and s_b[-1]) + assert (s_a[0] and s_b[-1]) == "b" - # print(s_a + s_b or s_b + s_a + s_a[0] and s_b[-1]) - # assert (s_a + s_b or s_b + s_a + s_a[0] and s_b[-1]) == "ab" + print(s_a + s_b or s_b + s_a + s_a[0] and s_b[-1]) + assert (s_a + s_b or s_b + s_a + s_a[0] and s_b[-1]) == "ab" test_logical_compare_literal() From a90e71975232b9033ade0d6c1677ec905bae897c Mon Sep 17 00:00:00 2001 From: hankluo6 Date: Sat, 18 May 2024 12:16:39 -0500 Subject: [PATCH 3/3] Add comment about test --- integration_tests/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/integration_tests/CMakeLists.txt b/integration_tests/CMakeLists.txt index 36a21c0e97..8d70900cdf 100644 --- a/integration_tests/CMakeLists.txt +++ b/integration_tests/CMakeLists.txt @@ -765,8 +765,8 @@ RUN(NAME test_platform LABELS cpython llvm llvm_jit c) RUN(NAME test_vars_01 LABELS cpython llvm llvm_jit) RUN(NAME test_version LABELS cpython llvm llvm_jit) RUN(NAME logical_binop1 LABELS cpython llvm llvm_jit) -RUN(NAME test_logical_compare LABELS cpython llvm llvm_jit) -RUN(NAME test_logical_assignment LABELS cpython llvm llvm_jit) +RUN(NAME test_logical_compare LABELS cpython llvm llvm_jit) # TODO: Add C backend after fixing issue #2708 +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)