diff --git a/integration_tests/run_tests.py b/integration_tests/run_tests.py index 8f3eb215f6..0b7868e462 100755 --- a/integration_tests/run_tests.py +++ b/integration_tests/run_tests.py @@ -23,6 +23,7 @@ "test_builtin_int.py", "test_builtin_len.py", "test_builtin_float.py", + "test_builtin_str_02.py", "test_math1.py", "test_math_02.py", "test_c_interop_01.py", diff --git a/integration_tests/test_builtin_len.py b/integration_tests/test_builtin_len.py index 29e1c53159..23f46bf3f7 100644 --- a/integration_tests/test_builtin_len.py +++ b/integration_tests/test_builtin_len.py @@ -6,3 +6,5 @@ def test_len(): assert len(s) == 0 assert len("abcd") == 4 assert len("") == 0 + +test_len() diff --git a/integration_tests/test_builtin_str_02.py b/integration_tests/test_builtin_str_02.py new file mode 100644 index 0000000000..5a91387b53 --- /dev/null +++ b/integration_tests/test_builtin_str_02.py @@ -0,0 +1,19 @@ +def _lpython_str_equal(a: str, b: str) -> bool: + if len(a) != len(b): + return False + i: i32 + for i in range(len(a)): + if a[i] != b[i]: + return False + return True + +def f(): + assert _lpython_str_equal("a", "a") + assert not _lpython_str_equal("a2", "a") + assert not _lpython_str_equal("a", "a123") + assert not _lpython_str_equal("a23", "a24") + assert _lpython_str_equal("a24", "a24") + assert _lpython_str_equal("abcdefg", "abcdefg") + assert not _lpython_str_equal("abcdef3", "abcdefg") + +f() diff --git a/src/libasr/codegen/asr_to_cpp.cpp b/src/libasr/codegen/asr_to_cpp.cpp index a2f3fb1c5a..382e483f05 100644 --- a/src/libasr/codegen/asr_to_cpp.cpp +++ b/src/libasr/codegen/asr_to_cpp.cpp @@ -1070,7 +1070,9 @@ Kokkos::View from_std_vector(const std::vector &v) void visit_DoConcurrentLoop(const ASR::DoConcurrentLoop_t &x) { std::string indent(indentation_level*indentation_spaces, ' '); std::string out = indent + "Kokkos::parallel_for("; - out += "Kokkos::RangePolicy(1, "; + out += "Kokkos::RangePolicy("; + visit_expr(*x.m_head.m_start); + out += src + ", "; visit_expr(*x.m_head.m_end); out += src + "+1)"; ASR::Variable_t *loop_var = LFortran::ASRUtils::EXPR2VAR(x.m_head.m_v); diff --git a/src/libasr/codegen/asr_to_llvm.cpp b/src/libasr/codegen/asr_to_llvm.cpp index 51f77bc516..09c5c5cd31 100644 --- a/src/libasr/codegen/asr_to_llvm.cpp +++ b/src/libasr/codegen/asr_to_llvm.cpp @@ -999,6 +999,8 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor && ASR::down_cast(x.m_type)->n_dims == 0) { // String indexing: if (x.n_args == 1) { + LFORTRAN_ASSERT(x.m_args[0].m_left) + LFORTRAN_ASSERT(x.m_args[0].m_right) if (ASR::is_a(*x.m_args[0].m_left) &&ASR::is_a(*x.m_args[0].m_right)) { ASR::Variable_t *l = EXPR2VAR(x.m_args[0].m_left); @@ -1022,7 +1024,20 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor throw CodeGenError("Only string(a:b) for a==b supported for now.", x.base.base.loc); } } else { - throw CodeGenError("Only string(a:b) for a,b variables for now.", x.base.base.loc); + //throw CodeGenError("Only string(a:b) for a,b variables for now.", x.base.base.loc); + // Use the "right" index for now + this->visit_expr_wrapper(x.m_args[0].m_right, true); + llvm::Value *idx = tmp; + idx = builder->CreateSub(idx, llvm::ConstantInt::get(context, llvm::APInt(32, 1))); + //std::vector idx_vec = {llvm::ConstantInt::get(context, llvm::APInt(32, 0)), idx}; + std::vector idx_vec = {idx}; + llvm::Value *str = builder->CreateLoad(array); + llvm::Value *p = builder->CreateGEP(str, idx_vec); + // TODO: Currently the string starts at the right location, but goes to the end of the original string. + // We have to allocate a new string, copy it and add null termination. + + tmp = builder->CreateAlloca(character_type, nullptr); + builder->CreateStore(p, tmp); } } else { throw CodeGenError("Only string(a:b) supported for now.", x.base.base.loc); @@ -3901,27 +3916,27 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor } else if (parent_subroutine){ push_nested_stack(parent_subroutine); } + bool intrinsic_function = ASRUtils::is_intrinsic_function2(s); uint32_t h; - if (s->m_abi == ASR::abiType::Source) { + if (s->m_abi == ASR::abiType::Source && !intrinsic_function) { h = get_hash((ASR::asr_t*)s); } else if (s->m_abi == ASR::abiType::LFortranModule) { throw CodeGenError("Function LFortran interfaces not implemented yet"); } else if (s->m_abi == ASR::abiType::Interactive) { h = get_hash((ASR::asr_t*)s); - } else if (s->m_abi == ASR::abiType::Intrinsic) { + } else if (s->m_abi == ASR::abiType::Intrinsic || intrinsic_function) { std::string func_name = s->m_name; if( fname2arg_type.find(func_name) != fname2arg_type.end() ) { h = get_hash((ASR::asr_t*)s); } else { + if (func_name == "len") { + std::vector args = convert_call_args(x, "len"); + LFORTRAN_ASSERT(args.size() == 1) + tmp = lfortran_str_len(args[0]); + return; + } if( s->m_deftype == ASR::deftypeType::Interface ) { - if (func_name == "len") { - std::vector args = convert_call_args(x, "len"); - LFORTRAN_ASSERT(args.size() == 1) - tmp = lfortran_str_len(args[0]); - return; - } else { - throw CodeGenError("Intrinsic '" + func_name + "' not implemented yet and compile time value is not available."); - } + throw CodeGenError("Intrinsic '" + func_name + "' not implemented yet and compile time value is not available."); } else { h = get_hash((ASR::asr_t*)s); } diff --git a/src/lpython/semantics/python_ast_to_asr.cpp b/src/lpython/semantics/python_ast_to_asr.cpp index 12044c02e2..3dd332ad1e 100644 --- a/src/lpython/semantics/python_ast_to_asr.cpp +++ b/src/lpython/semantics/python_ast_to_asr.cpp @@ -967,6 +967,19 @@ class BodyVisitor : public CommonVisitor { tmp = ASR::make_Assert_t(al, x.base.base.loc, test, msg); } + ASR::expr_t *index_add_one(const Location &loc, ASR::expr_t *idx) { + // Add 1 to the index `idx`, assumes `idx` is of type Integer 4 + ASR::expr_t *overloaded = nullptr; + ASR::expr_t *comptime_value = nullptr; + ASR::ttype_t *a_type = ASRUtils::TYPE(ASR::make_Integer_t(al, loc, + 4, nullptr, 0)); + ASR::expr_t *constant_one = ASR::down_cast(ASR::make_ConstantInteger_t( + al, loc, 1, a_type)); + return ASRUtils::EXPR(ASR::make_BinOp_t(al, loc, idx, + ASR::binopType::Add, constant_one, a_type, + comptime_value, overloaded)); + } + void visit_Subscript(const AST::Subscript_t &x) { this->visit_expr(*x.m_value); ASR::expr_t *value = ASRUtils::EXPR(tmp); @@ -981,25 +994,31 @@ class BodyVisitor : public CommonVisitor { AST::Slice_t *s = AST::down_cast(x.m_slice); if (s->m_lower != nullptr) { this->visit_expr(*s->m_lower); - ai.m_left = ASRUtils::EXPR(tmp); + ai.m_left = index_add_one(x.base.base.loc, ASRUtils::EXPR(tmp)); } if (s->m_upper != nullptr) { this->visit_expr(*s->m_upper); - ai.m_right = ASRUtils::EXPR(tmp); + ai.m_right = index_add_one(x.base.base.loc, ASRUtils::EXPR(tmp)); } if (s->m_step != nullptr) { this->visit_expr(*s->m_step); - ai.m_step = ASRUtils::EXPR(tmp); + ai.m_step = index_add_one(x.base.base.loc, ASRUtils::EXPR(tmp)); } } else { this->visit_expr(*x.m_slice); - ASR::expr_t *index = ASRUtils::EXPR(tmp); + ASR::expr_t *index = index_add_one(x.base.base.loc, ASRUtils::EXPR(tmp)); ai.m_right = index; } - args.push_back(al, ai); ASR::symbol_t *s = ASR::down_cast(value)->m_v; ASR::Variable_t *v = ASR::down_cast(s); ASR::ttype_t *type = v->m_type; + if (ASR::is_a(*type)) { + if (!ai.m_left && ai.m_right) { + // String indexing is done using "a(3:3)" style + ai.m_left = ai.m_right; + } + } + args.push_back(al, ai); tmp = ASR::make_ArrayRef_t(al, x.base.base.loc, s, args.p, args.size(), type, nullptr); } diff --git a/tests/reference/asr-dictionary1-a105a36.json b/tests/reference/asr-dictionary1-a105a36.json index e365076c3b..c76af6ef63 100644 --- a/tests/reference/asr-dictionary1-a105a36.json +++ b/tests/reference/asr-dictionary1-a105a36.json @@ -6,7 +6,7 @@ "outfile": null, "outfile_hash": null, "stdout": "asr-dictionary1-a105a36.stdout", - "stdout_hash": "7d1a1cf87681db72f9b9ea3b3e5c7e1b5177bb3179e93b13c1867f45", + "stdout_hash": "a1b435f14f711aab8b1ac266fdda7fa5379c00680f64506f88359dde", "stderr": null, "stderr_hash": null, "returncode": 0 diff --git a/tests/reference/asr-dictionary1-a105a36.stdout b/tests/reference/asr-dictionary1-a105a36.stdout index c7064d000f..16ad325071 100644 --- a/tests/reference/asr-dictionary1-a105a36.stdout +++ b/tests/reference/asr-dictionary1-a105a36.stdout @@ -1 +1 @@ -(TranslationUnit (SymbolTable 1 {main_program: (Program (SymbolTable 3 {}) main_program [] []), test_Dict: (Subroutine (SymbolTable 2 {x: (Variable 2 x Local () () Default (Dict (Integer 4 []) (Integer 4 [])) Source Public Required .false.), y: (Variable 2 y Local () () Default (Dict (Character 1 -2 () []) (Integer 4 [])) Source Public Required .false.), z: (Variable 2 z Local () () Default (Integer 4 []) Source Public Required .false.)}) test_Dict [] [(= (Var 2 x) (ConstantDictionary [(ConstantInteger 1 (Integer 4 [])) (ConstantInteger 3 (Integer 4 []))] [(ConstantInteger 2 (Integer 4 [])) (ConstantInteger 4 (Integer 4 []))] (Dict (Integer 4 []) (Integer 4 []))) ()) (= (Var 2 y) (ConstantDictionary [(ConstantString "a" (Character 1 1 () [])) (ConstantString "b" (Character 1 1 () []))] [(UnaryOp USub (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) (ConstantInteger -1 (Integer 4 []))) (UnaryOp USub (ConstantInteger 2 (Integer 4 [])) (Integer 4 []) (ConstantInteger -2 (Integer 4 [])))] (Dict (Character 1 1 () []) (Integer 4 []))) ()) (= (Var 2 z) (ArrayRef 2 x [(() (ConstantString "a" (Character 1 1 () [])) ())] (Dict (Integer 4 []) (Integer 4 [])) ()) ()) (= (Var 2 z) (ArrayRef 2 x [(() (ConstantString "b" (Character 1 1 () [])) ())] (Dict (Integer 4 []) (Integer 4 [])) ()) ())] Source Public Implementation () .false. .false.)}) []) +(TranslationUnit (SymbolTable 1 {main_program: (Program (SymbolTable 3 {}) main_program [] []), test_Dict: (Subroutine (SymbolTable 2 {x: (Variable 2 x Local () () Default (Dict (Integer 4 []) (Integer 4 [])) Source Public Required .false.), y: (Variable 2 y Local () () Default (Dict (Character 1 -2 () []) (Integer 4 [])) Source Public Required .false.), z: (Variable 2 z Local () () Default (Integer 4 []) Source Public Required .false.)}) test_Dict [] [(= (Var 2 x) (ConstantDictionary [(ConstantInteger 1 (Integer 4 [])) (ConstantInteger 3 (Integer 4 []))] [(ConstantInteger 2 (Integer 4 [])) (ConstantInteger 4 (Integer 4 []))] (Dict (Integer 4 []) (Integer 4 []))) ()) (= (Var 2 y) (ConstantDictionary [(ConstantString "a" (Character 1 1 () [])) (ConstantString "b" (Character 1 1 () []))] [(UnaryOp USub (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) (ConstantInteger -1 (Integer 4 []))) (UnaryOp USub (ConstantInteger 2 (Integer 4 [])) (Integer 4 []) (ConstantInteger -2 (Integer 4 [])))] (Dict (Character 1 1 () []) (Integer 4 []))) ()) (= (Var 2 z) (ArrayRef 2 x [(() (BinOp (ConstantString "a" (Character 1 1 () [])) Add (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) () ()) ())] (Dict (Integer 4 []) (Integer 4 [])) ()) ()) (= (Var 2 z) (ArrayRef 2 x [(() (BinOp (ConstantString "b" (Character 1 1 () [])) Add (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) () ()) ())] (Dict (Integer 4 []) (Integer 4 [])) ()) ())] Source Public Implementation () .false. .false.)}) []) diff --git a/tests/reference/asr-doconcurrentloop_01-3fdc189.json b/tests/reference/asr-doconcurrentloop_01-3fdc189.json index 8e433c6726..b762dc62e5 100644 --- a/tests/reference/asr-doconcurrentloop_01-3fdc189.json +++ b/tests/reference/asr-doconcurrentloop_01-3fdc189.json @@ -6,7 +6,7 @@ "outfile": null, "outfile_hash": null, "stdout": "asr-doconcurrentloop_01-3fdc189.stdout", - "stdout_hash": "183dfafc0b2bc0eb5c1e9c003ac6593e394015616ef63348ed6e2fd5", + "stdout_hash": "e72faeb1c7457129366580f156612808b1990df5bcac53d69ac077e8", "stderr": null, "stderr_hash": null, "returncode": 0 diff --git a/tests/reference/asr-doconcurrentloop_01-3fdc189.stdout b/tests/reference/asr-doconcurrentloop_01-3fdc189.stdout index 2fe168737e..49834ba3b8 100644 --- a/tests/reference/asr-doconcurrentloop_01-3fdc189.stdout +++ b/tests/reference/asr-doconcurrentloop_01-3fdc189.stdout @@ -1 +1 @@ -(TranslationUnit (SymbolTable 1 {_lfortran_main_program: (Subroutine (SymbolTable 5 {}) _lfortran_main_program [] [(SubroutineCall 1 main0 () [] ())] Source Public Implementation () .false. .false.), main0: (Subroutine (SymbolTable 3 {a: (Variable 3 a Local () () Default (Real 4 [((ConstantInteger 1 (Integer 4 [])) (ConstantInteger 10000 (Integer 4 [])))]) Source Public Required .false.), b: (Variable 3 b Local () () Default (Real 4 [((ConstantInteger 1 (Integer 4 [])) (ConstantInteger 10000 (Integer 4 [])))]) Source Public Required .false.), c: (Variable 3 c Local () () Default (Real 4 [((ConstantInteger 1 (Integer 4 [])) (ConstantInteger 10000 (Integer 4 [])))]) Source Public Required .false.), i: (Variable 3 i Local () () Default (Integer 4 []) Source Public Required .false.), nsize: (Variable 3 nsize Local () () Default (Integer 4 []) Source Public Required .false.), scalar: (Variable 3 scalar Local () () Default (Real 4 []) Source Public Required .false.)}) main0 [] [(= (Var 3 scalar) (ImplicitCast (ConstantReal 10.000000 (Real 8 [])) RealToReal (Real 4 []) ()) ()) (= (Var 3 nsize) (ConstantInteger 1234 (Integer 4 [])) ()) (DoConcurrentLoop ((Var 3 i) (ConstantInteger 0 (Integer 4 [])) (BinOp (Var 3 nsize) Sub (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) () ()) (ConstantInteger 1 (Integer 4 []))) [(= (ArrayRef 3 a [(() (Var 3 i) ())] (Real 4 [((ConstantInteger 1 (Integer 4 [])) (ConstantInteger 10000 (Integer 4 [])))]) ()) (ImplicitCast (ConstantReal 5.000000 (Real 8 [])) RealToReal (Real 4 [((ConstantInteger 1 (Integer 4 [])) (ConstantInteger 10000 (Integer 4 [])))]) ()) ()) (= (ArrayRef 3 b [(() (Var 3 i) ())] (Real 4 [((ConstantInteger 1 (Integer 4 [])) (ConstantInteger 10000 (Integer 4 [])))]) ()) (ImplicitCast (ConstantReal 5.000000 (Real 8 [])) RealToReal (Real 4 [((ConstantInteger 1 (Integer 4 [])) (ConstantInteger 10000 (Integer 4 [])))]) ()) ())]) (SubroutineCall 1 triad () [(Var 3 a) (Var 3 b) (Var 3 scalar) (Var 3 c)] ()) (Print () [(ConstantString "End Stream Triad" (Character 1 16 () []))])] Source Public Implementation () .false. .false.), main_program: (Program (SymbolTable 4 {}) main_program [] [(SubroutineCall 1 _lfortran_main_program () [] ())]), triad: (Subroutine (SymbolTable 2 {N: (Variable 2 N Local () () Default (Integer 4 []) Source Public Required .false.), a: (Variable 2 a InOut () () Default (Real 4 [(() ())]) Source Public Required .false.), b: (Variable 2 b InOut () () Default (Real 4 [(() ())]) Source Public Required .false.), c: (Variable 2 c InOut () () Default (Real 4 [(() ())]) Source Public Required .false.), i: (Variable 2 i Local () () Default (Integer 4 []) Source Public Required .false.), scalar: (Variable 2 scalar In () () Default (Real 4 []) Source Public Required .false.)}) triad [(Var 2 a) (Var 2 b) (Var 2 scalar) (Var 2 c)] [(= (Var 2 N) (ConstantInteger 1234 (Integer 4 [])) ()) (DoConcurrentLoop ((Var 2 i) (ConstantInteger 0 (Integer 4 [])) (BinOp (Var 2 N) Sub (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) () ()) (ConstantInteger 1 (Integer 4 []))) [(= (ArrayRef 2 c [(() (Var 2 i) ())] (Real 4 [(() ())]) ()) (BinOp (ArrayRef 2 a [(() (Var 2 i) ())] (Real 4 [(() ())]) ()) Add (BinOp (Var 2 scalar) Mul (ArrayRef 2 b [(() (Var 2 i) ())] (Real 4 [(() ())]) ()) (Real 4 []) () ()) (Real 4 [(() ())]) () ()) ())])] Source Public Implementation () .false. .false.)}) []) +(TranslationUnit (SymbolTable 1 {_lfortran_main_program: (Subroutine (SymbolTable 5 {}) _lfortran_main_program [] [(SubroutineCall 1 main0 () [] ())] Source Public Implementation () .false. .false.), main0: (Subroutine (SymbolTable 3 {a: (Variable 3 a Local () () Default (Real 4 [((ConstantInteger 1 (Integer 4 [])) (ConstantInteger 10000 (Integer 4 [])))]) Source Public Required .false.), b: (Variable 3 b Local () () Default (Real 4 [((ConstantInteger 1 (Integer 4 [])) (ConstantInteger 10000 (Integer 4 [])))]) Source Public Required .false.), c: (Variable 3 c Local () () Default (Real 4 [((ConstantInteger 1 (Integer 4 [])) (ConstantInteger 10000 (Integer 4 [])))]) Source Public Required .false.), i: (Variable 3 i Local () () Default (Integer 4 []) Source Public Required .false.), nsize: (Variable 3 nsize Local () () Default (Integer 4 []) Source Public Required .false.), scalar: (Variable 3 scalar Local () () Default (Real 4 []) Source Public Required .false.)}) main0 [] [(= (Var 3 scalar) (ImplicitCast (ConstantReal 10.000000 (Real 8 [])) RealToReal (Real 4 []) ()) ()) (= (Var 3 nsize) (ConstantInteger 1234 (Integer 4 [])) ()) (DoConcurrentLoop ((Var 3 i) (ConstantInteger 0 (Integer 4 [])) (BinOp (Var 3 nsize) Sub (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) () ()) (ConstantInteger 1 (Integer 4 []))) [(= (ArrayRef 3 a [(() (BinOp (Var 3 i) Add (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) () ()) ())] (Real 4 [((ConstantInteger 1 (Integer 4 [])) (ConstantInteger 10000 (Integer 4 [])))]) ()) (ImplicitCast (ConstantReal 5.000000 (Real 8 [])) RealToReal (Real 4 [((ConstantInteger 1 (Integer 4 [])) (ConstantInteger 10000 (Integer 4 [])))]) ()) ()) (= (ArrayRef 3 b [(() (BinOp (Var 3 i) Add (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) () ()) ())] (Real 4 [((ConstantInteger 1 (Integer 4 [])) (ConstantInteger 10000 (Integer 4 [])))]) ()) (ImplicitCast (ConstantReal 5.000000 (Real 8 [])) RealToReal (Real 4 [((ConstantInteger 1 (Integer 4 [])) (ConstantInteger 10000 (Integer 4 [])))]) ()) ())]) (SubroutineCall 1 triad () [(Var 3 a) (Var 3 b) (Var 3 scalar) (Var 3 c)] ()) (Print () [(ConstantString "End Stream Triad" (Character 1 16 () []))])] Source Public Implementation () .false. .false.), main_program: (Program (SymbolTable 4 {}) main_program [] [(SubroutineCall 1 _lfortran_main_program () [] ())]), triad: (Subroutine (SymbolTable 2 {N: (Variable 2 N Local () () Default (Integer 4 []) Source Public Required .false.), a: (Variable 2 a InOut () () Default (Real 4 [(() ())]) Source Public Required .false.), b: (Variable 2 b InOut () () Default (Real 4 [(() ())]) Source Public Required .false.), c: (Variable 2 c InOut () () Default (Real 4 [(() ())]) Source Public Required .false.), i: (Variable 2 i Local () () Default (Integer 4 []) Source Public Required .false.), scalar: (Variable 2 scalar In () () Default (Real 4 []) Source Public Required .false.)}) triad [(Var 2 a) (Var 2 b) (Var 2 scalar) (Var 2 c)] [(= (Var 2 N) (ConstantInteger 1234 (Integer 4 [])) ()) (DoConcurrentLoop ((Var 2 i) (ConstantInteger 0 (Integer 4 [])) (BinOp (Var 2 N) Sub (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) () ()) (ConstantInteger 1 (Integer 4 []))) [(= (ArrayRef 2 c [(() (BinOp (Var 2 i) Add (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) () ()) ())] (Real 4 [(() ())]) ()) (BinOp (ArrayRef 2 a [(() (BinOp (Var 2 i) Add (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) () ()) ())] (Real 4 [(() ())]) ()) Add (BinOp (Var 2 scalar) Mul (ArrayRef 2 b [(() (BinOp (Var 2 i) Add (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) () ()) ())] (Real 4 [(() ())]) ()) (Real 4 []) () ()) (Real 4 [(() ())]) () ()) ())])] Source Public Implementation () .false. .false.)}) []) diff --git a/tests/reference/asr-list1-770ba33.json b/tests/reference/asr-list1-770ba33.json index 043d395ed4..5eacf69db4 100644 --- a/tests/reference/asr-list1-770ba33.json +++ b/tests/reference/asr-list1-770ba33.json @@ -6,7 +6,7 @@ "outfile": null, "outfile_hash": null, "stdout": "asr-list1-770ba33.stdout", - "stdout_hash": "8d8b6e7775ff0eeba1cf05bb19d8d76a6d66617217d948c5f2e6c604", + "stdout_hash": "914fe18743d90c819ca6101262ba2218b74a2007025b9593f8b85e35", "stderr": null, "stderr_hash": null, "returncode": 0 diff --git a/tests/reference/asr-list1-770ba33.stdout b/tests/reference/asr-list1-770ba33.stdout index 2ed95fc7e9..ad96ba8e86 100644 --- a/tests/reference/asr-list1-770ba33.stdout +++ b/tests/reference/asr-list1-770ba33.stdout @@ -1 +1 @@ -(TranslationUnit (SymbolTable 1 {main_program: (Program (SymbolTable 3 {}) main_program [] []), test_List: (Subroutine (SymbolTable 2 {a: (Variable 2 a Local () () Default (Integer 4 []) Source Public Required .false.), b: (Variable 2 b Local () () Default (Character 1 -2 () []) Source Public Required .false.), c: (Variable 2 c Local () () Default (Integer 4 []) Source Public Required .false.), d: (Variable 2 d Local () () Default (Integer 4 []) Source Public Required .false.)}) test_List [] [(= (Var 2 a) (ConstantArray [(ConstantInteger 1 (Integer 4 [])) (ConstantInteger 2 (Integer 4 [])) (ConstantInteger 3 (Integer 4 []))] (Integer 4 [])) ()) (= (Var 2 a) (ConstantArray [(UnaryOp USub (ConstantInteger 3 (Integer 4 [])) (Integer 4 []) (ConstantInteger -3 (Integer 4 []))) (UnaryOp USub (ConstantInteger 2 (Integer 4 [])) (Integer 4 []) (ConstantInteger -2 (Integer 4 []))) (UnaryOp USub (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) (ConstantInteger -1 (Integer 4 [])))] (Integer 4 [])) ()) (= (Var 2 b) (ConstantArray [(ConstantString "a" (Character 1 1 () [])) (ConstantString "b" (Character 1 1 () [])) (ConstantString "c" (Character 1 1 () []))] (Character 1 1 () [])) ()) (= (Var 2 c) (ConstantArray [(ConstantArray [(ConstantInteger 1 (Integer 4 [])) (ConstantInteger 2 (Integer 4 [])) (ConstantInteger 3 (Integer 4 []))] (Integer 4 [])) (ConstantArray [(ConstantInteger 4 (Integer 4 [])) (ConstantInteger 5 (Integer 4 [])) (ConstantInteger 6 (Integer 4 []))] (Integer 4 []))] (Integer 4 [])) ()) (= (Var 2 d) (ArrayRef 2 a [(() (ConstantInteger 2 (Integer 4 [])) ())] (Integer 4 []) ()) ())] Source Public Implementation () .false. .false.)}) []) +(TranslationUnit (SymbolTable 1 {main_program: (Program (SymbolTable 3 {}) main_program [] []), test_List: (Subroutine (SymbolTable 2 {a: (Variable 2 a Local () () Default (Integer 4 []) Source Public Required .false.), b: (Variable 2 b Local () () Default (Character 1 -2 () []) Source Public Required .false.), c: (Variable 2 c Local () () Default (Integer 4 []) Source Public Required .false.), d: (Variable 2 d Local () () Default (Integer 4 []) Source Public Required .false.)}) test_List [] [(= (Var 2 a) (ConstantArray [(ConstantInteger 1 (Integer 4 [])) (ConstantInteger 2 (Integer 4 [])) (ConstantInteger 3 (Integer 4 []))] (Integer 4 [])) ()) (= (Var 2 a) (ConstantArray [(UnaryOp USub (ConstantInteger 3 (Integer 4 [])) (Integer 4 []) (ConstantInteger -3 (Integer 4 []))) (UnaryOp USub (ConstantInteger 2 (Integer 4 [])) (Integer 4 []) (ConstantInteger -2 (Integer 4 []))) (UnaryOp USub (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) (ConstantInteger -1 (Integer 4 [])))] (Integer 4 [])) ()) (= (Var 2 b) (ConstantArray [(ConstantString "a" (Character 1 1 () [])) (ConstantString "b" (Character 1 1 () [])) (ConstantString "c" (Character 1 1 () []))] (Character 1 1 () [])) ()) (= (Var 2 c) (ConstantArray [(ConstantArray [(ConstantInteger 1 (Integer 4 [])) (ConstantInteger 2 (Integer 4 [])) (ConstantInteger 3 (Integer 4 []))] (Integer 4 [])) (ConstantArray [(ConstantInteger 4 (Integer 4 [])) (ConstantInteger 5 (Integer 4 [])) (ConstantInteger 6 (Integer 4 []))] (Integer 4 []))] (Integer 4 [])) ()) (= (Var 2 d) (ArrayRef 2 a [(() (BinOp (ConstantInteger 2 (Integer 4 [])) Add (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) () ()) ())] (Integer 4 []) ()) ())] Source Public Implementation () .false. .false.)}) []) diff --git a/tests/reference/asr-subscript1-1acfc19.json b/tests/reference/asr-subscript1-1acfc19.json index 8ca9474572..0d6a190703 100644 --- a/tests/reference/asr-subscript1-1acfc19.json +++ b/tests/reference/asr-subscript1-1acfc19.json @@ -6,7 +6,7 @@ "outfile": null, "outfile_hash": null, "stdout": "asr-subscript1-1acfc19.stdout", - "stdout_hash": "bb7b8b7478d50742985082735dfa0d2cf059f67e66a730c1c14915e2", + "stdout_hash": "3fc28a6505282d18209a17351a382d83d4d68eaa65659752ac1976cd", "stderr": null, "stderr_hash": null, "returncode": 0 diff --git a/tests/reference/asr-subscript1-1acfc19.stdout b/tests/reference/asr-subscript1-1acfc19.stdout index 48711b551f..5d550f1e72 100644 --- a/tests/reference/asr-subscript1-1acfc19.stdout +++ b/tests/reference/asr-subscript1-1acfc19.stdout @@ -1 +1 @@ -(TranslationUnit (SymbolTable 1 {main_program: (Program (SymbolTable 3 {}) main_program [] []), test_subscript: (Subroutine (SymbolTable 2 {A: (Variable 2 A Local () () Default (Integer 4 [((ConstantInteger 1 (Integer 4 [])) (ConstantInteger 5 (Integer 4 [])))]) Source Public Required .false.), B: (Variable 2 B Local () () Default (Integer 4 [((ConstantInteger 1 (Integer 4 [])) (ConstantInteger 2 (Integer 4 [])))]) Source Public Required .false.), i: (Variable 2 i Local () () Default (Integer 4 []) Source Public Required .false.), s: (Variable 2 s Local () () Default (Character 1 -2 () []) Source Public Required .false.)}) test_subscript [] [(= (Var 2 s) (ConstantString "abc" (Character 1 3 () [])) ()) (= (Var 2 s) (ArrayRef 2 s [(() (ConstantInteger 0 (Integer 4 [])) ())] (Character 1 -2 () []) ()) ()) (= (Var 2 s) (ArrayRef 2 s [((ConstantInteger 1 (Integer 4 [])) (ConstantInteger 2 (Integer 4 [])) ())] (Character 1 -2 () []) ()) ()) (= (Var 2 s) (ArrayRef 2 s [(() () ())] (Character 1 -2 () []) ()) ()) (= (Var 2 s) (ArrayRef 2 s [(() () (UnaryOp USub (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) (ConstantInteger -1 (Integer 4 []))))] (Character 1 -2 () []) ()) ()) (= (Var 2 s) (ArrayRef 2 s [(() () (ConstantInteger 2 (Integer 4 [])))] (Character 1 -2 () []) ()) ()) (= (Var 2 s) (ArrayRef 2 s [((ConstantInteger 1 (Integer 4 [])) (ConstantInteger 88 (Integer 4 [])) (ConstantInteger 1 (Integer 4 [])))] (Character 1 -2 () []) ()) ()) (= (Var 2 s) (ArrayRef 2 s [(() (ConstantInteger 1 (Integer 4 [])) (UnaryOp USub (ConstantInteger 4 (Integer 4 [])) (Integer 4 []) (ConstantInteger -4 (Integer 4 []))))] (Character 1 -2 () []) ()) ()) (= (Var 2 s) (ArrayRef 2 s [((UnaryOp USub (ConstantInteger 89 (Integer 4 [])) (Integer 4 []) (ConstantInteger -89 (Integer 4 []))) () (ConstantInteger 4 (Integer 4 [])))] (Character 1 -2 () []) ()) ()) (= (Var 2 s) (ArrayRef 2 s [((UnaryOp USub (ConstantInteger 3 (Integer 4 [])) (Integer 4 []) (ConstantInteger -3 (Integer 4 []))) (UnaryOp USub (ConstantInteger 3 (Integer 4 [])) (Integer 4 []) (ConstantInteger -3 (Integer 4 []))) (UnaryOp USub (ConstantInteger 3 (Integer 4 [])) (Integer 4 []) (ConstantInteger -3 (Integer 4 []))))] (Character 1 -2 () []) ()) ()) (= (Var 2 s) (ArrayRef 2 s [((ConstantInteger 2 (Integer 4 [])) (ConstantInteger 3 (Integer 4 [])) ())] (Character 1 -2 () []) ()) ()) (= (Var 2 i) (ArrayRef 2 A [(() (ConstantInteger 0 (Integer 4 [])) ())] (Integer 4 [((ConstantInteger 1 (Integer 4 [])) (ConstantInteger 5 (Integer 4 [])))]) ()) ()) (= (Var 2 B) (ArrayRef 2 A [((ConstantInteger 1 (Integer 4 [])) (ConstantInteger 3 (Integer 4 [])) ())] (Integer 4 [((ConstantInteger 1 (Integer 4 [])) (ConstantInteger 5 (Integer 4 [])))]) ()) ()) (= (Var 2 B) (ArrayRef 2 A [((ConstantInteger 1 (Integer 4 [])) (ConstantInteger 2 (Integer 4 [])) (ConstantInteger 3 (Integer 4 [])))] (Integer 4 [((ConstantInteger 1 (Integer 4 [])) (ConstantInteger 5 (Integer 4 [])))]) ()) ())] Source Public Implementation () .false. .false.)}) []) +(TranslationUnit (SymbolTable 1 {main_program: (Program (SymbolTable 3 {}) main_program [] []), test_subscript: (Subroutine (SymbolTable 2 {A: (Variable 2 A Local () () Default (Integer 4 [((ConstantInteger 1 (Integer 4 [])) (ConstantInteger 5 (Integer 4 [])))]) Source Public Required .false.), B: (Variable 2 B Local () () Default (Integer 4 [((ConstantInteger 1 (Integer 4 [])) (ConstantInteger 2 (Integer 4 [])))]) Source Public Required .false.), i: (Variable 2 i Local () () Default (Integer 4 []) Source Public Required .false.), s: (Variable 2 s Local () () Default (Character 1 -2 () []) Source Public Required .false.)}) test_subscript [] [(= (Var 2 s) (ConstantString "abc" (Character 1 3 () [])) ()) (= (Var 2 s) (ArrayRef 2 s [((BinOp (ConstantInteger 0 (Integer 4 [])) Add (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) () ()) (BinOp (ConstantInteger 0 (Integer 4 [])) Add (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) () ()) ())] (Character 1 -2 () []) ()) ()) (= (Var 2 s) (ArrayRef 2 s [((BinOp (ConstantInteger 1 (Integer 4 [])) Add (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) () ()) (BinOp (ConstantInteger 2 (Integer 4 [])) Add (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) () ()) ())] (Character 1 -2 () []) ()) ()) (= (Var 2 s) (ArrayRef 2 s [(() () ())] (Character 1 -2 () []) ()) ()) (= (Var 2 s) (ArrayRef 2 s [(() () (BinOp (UnaryOp USub (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) (ConstantInteger -1 (Integer 4 []))) Add (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) () ()))] (Character 1 -2 () []) ()) ()) (= (Var 2 s) (ArrayRef 2 s [(() () (BinOp (ConstantInteger 2 (Integer 4 [])) Add (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) () ()))] (Character 1 -2 () []) ()) ()) (= (Var 2 s) (ArrayRef 2 s [((BinOp (ConstantInteger 1 (Integer 4 [])) Add (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) () ()) (BinOp (ConstantInteger 88 (Integer 4 [])) Add (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) () ()) (BinOp (ConstantInteger 1 (Integer 4 [])) Add (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) () ()))] (Character 1 -2 () []) ()) ()) (= (Var 2 s) (ArrayRef 2 s [((BinOp (ConstantInteger 1 (Integer 4 [])) Add (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) () ()) (BinOp (ConstantInteger 1 (Integer 4 [])) Add (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) () ()) (BinOp (UnaryOp USub (ConstantInteger 4 (Integer 4 [])) (Integer 4 []) (ConstantInteger -4 (Integer 4 []))) Add (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) () ()))] (Character 1 -2 () []) ()) ()) (= (Var 2 s) (ArrayRef 2 s [((BinOp (UnaryOp USub (ConstantInteger 89 (Integer 4 [])) (Integer 4 []) (ConstantInteger -89 (Integer 4 []))) Add (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) () ()) () (BinOp (ConstantInteger 4 (Integer 4 [])) Add (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) () ()))] (Character 1 -2 () []) ()) ()) (= (Var 2 s) (ArrayRef 2 s [((BinOp (UnaryOp USub (ConstantInteger 3 (Integer 4 [])) (Integer 4 []) (ConstantInteger -3 (Integer 4 []))) Add (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) () ()) (BinOp (UnaryOp USub (ConstantInteger 3 (Integer 4 [])) (Integer 4 []) (ConstantInteger -3 (Integer 4 []))) Add (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) () ()) (BinOp (UnaryOp USub (ConstantInteger 3 (Integer 4 [])) (Integer 4 []) (ConstantInteger -3 (Integer 4 []))) Add (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) () ()))] (Character 1 -2 () []) ()) ()) (= (Var 2 s) (ArrayRef 2 s [((BinOp (ConstantInteger 2 (Integer 4 [])) Add (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) () ()) (BinOp (ConstantInteger 3 (Integer 4 [])) Add (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) () ()) ())] (Character 1 -2 () []) ()) ()) (= (Var 2 i) (ArrayRef 2 A [(() (BinOp (ConstantInteger 0 (Integer 4 [])) Add (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) () ()) ())] (Integer 4 [((ConstantInteger 1 (Integer 4 [])) (ConstantInteger 5 (Integer 4 [])))]) ()) ()) (= (Var 2 B) (ArrayRef 2 A [((BinOp (ConstantInteger 1 (Integer 4 [])) Add (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) () ()) (BinOp (ConstantInteger 3 (Integer 4 [])) Add (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) () ()) ())] (Integer 4 [((ConstantInteger 1 (Integer 4 [])) (ConstantInteger 5 (Integer 4 [])))]) ()) ()) (= (Var 2 B) (ArrayRef 2 A [((BinOp (ConstantInteger 1 (Integer 4 [])) Add (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) () ()) (BinOp (ConstantInteger 2 (Integer 4 [])) Add (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) () ()) (BinOp (ConstantInteger 3 (Integer 4 [])) Add (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) () ()))] (Integer 4 [((ConstantInteger 1 (Integer 4 [])) (ConstantInteger 5 (Integer 4 [])))]) ()) ())] Source Public Implementation () .false. .false.)}) []) diff --git a/tests/reference/asr-test_builtin_len-55b0dec.json b/tests/reference/asr-test_builtin_len-55b0dec.json index 84172128f4..6961ef0b85 100644 --- a/tests/reference/asr-test_builtin_len-55b0dec.json +++ b/tests/reference/asr-test_builtin_len-55b0dec.json @@ -2,11 +2,11 @@ "basename": "asr-test_builtin_len-55b0dec", "cmd": "lpython --show-asr --no-color {infile} -o {outfile}", "infile": "tests/../integration_tests/test_builtin_len.py", - "infile_hash": "4f06e4b1cf9297660e56309d34d212edde95bc3f6ff4f4e5280c2c88", + "infile_hash": "f1540b68424e3c8f59af07f56535997ceda392b5e9c16f1d32c8913e", "outfile": null, "outfile_hash": null, "stdout": "asr-test_builtin_len-55b0dec.stdout", - "stdout_hash": "8546e54dce5e0cab77d8ff789ab25d78292c6dccf53538e07161aedb", + "stdout_hash": "f608e9caf601f75e201491bcd4a1650a5eb3c204513a681216746b8c", "stderr": null, "stderr_hash": null, "returncode": 0 diff --git a/tests/reference/asr-test_builtin_len-55b0dec.stdout b/tests/reference/asr-test_builtin_len-55b0dec.stdout index f7a9383f64..5c916fd24b 100644 --- a/tests/reference/asr-test_builtin_len-55b0dec.stdout +++ b/tests/reference/asr-test_builtin_len-55b0dec.stdout @@ -1 +1 @@ -(TranslationUnit (SymbolTable 1 {lpython_builtin: (IntrinsicModule lpython_builtin), main_program: (Program (SymbolTable 17 {}) main_program [] []), test_len: (Subroutine (SymbolTable 2 {len: (ExternalSymbol 2 len 4 len lpython_builtin [] len Private), s: (Variable 2 s Local () () Default (Character 1 -2 () []) Source Public Required .false.)}) test_len [] [(= (Var 2 s) (ConstantString "abcd" (Character 1 4 () [])) ()) (Assert (Compare (FunctionCall 2 len () [(Var 2 s)] [] (Integer 4 []) () ()) Eq (ConstantInteger 4 (Integer 4 [])) (Logical 4 []) () ()) ()) (= (Var 2 s) (ConstantString "" (Character 1 0 () [])) ()) (Assert (Compare (FunctionCall 2 len () [(Var 2 s)] [] (Integer 4 []) () ()) Eq (ConstantInteger 0 (Integer 4 [])) (Logical 4 []) () ()) ()) (Assert (Compare (FunctionCall 2 len () [(ConstantString "abcd" (Character 1 4 () []))] [] (Integer 4 []) (ConstantInteger 4 (Integer 4 [])) ()) Eq (ConstantInteger 4 (Integer 4 [])) (Logical 4 []) (ConstantLogical .true. (Logical 4 [])) ()) ()) (Assert (Compare (FunctionCall 2 len () [(ConstantString "" (Character 1 0 () []))] [] (Integer 4 []) (ConstantInteger 0 (Integer 4 [])) ()) Eq (ConstantInteger 0 (Integer 4 [])) (Logical 4 []) (ConstantLogical .true. (Logical 4 [])) ()) ())] Source Public Implementation () .false. .false.)}) []) +(TranslationUnit (SymbolTable 1 {_lfortran_main_program: (Subroutine (SymbolTable 18 {}) _lfortran_main_program [] [(SubroutineCall 1 test_len () [] ())] Source Public Implementation () .false. .false.), lpython_builtin: (IntrinsicModule lpython_builtin), main_program: (Program (SymbolTable 17 {}) main_program [] [(SubroutineCall 1 _lfortran_main_program () [] ())]), test_len: (Subroutine (SymbolTable 2 {len: (ExternalSymbol 2 len 4 len lpython_builtin [] len Private), s: (Variable 2 s Local () () Default (Character 1 -2 () []) Source Public Required .false.)}) test_len [] [(= (Var 2 s) (ConstantString "abcd" (Character 1 4 () [])) ()) (Assert (Compare (FunctionCall 2 len () [(Var 2 s)] [] (Integer 4 []) () ()) Eq (ConstantInteger 4 (Integer 4 [])) (Logical 4 []) () ()) ()) (= (Var 2 s) (ConstantString "" (Character 1 0 () [])) ()) (Assert (Compare (FunctionCall 2 len () [(Var 2 s)] [] (Integer 4 []) () ()) Eq (ConstantInteger 0 (Integer 4 [])) (Logical 4 []) () ()) ()) (Assert (Compare (FunctionCall 2 len () [(ConstantString "abcd" (Character 1 4 () []))] [] (Integer 4 []) (ConstantInteger 4 (Integer 4 [])) ()) Eq (ConstantInteger 4 (Integer 4 [])) (Logical 4 []) (ConstantLogical .true. (Logical 4 [])) ()) ()) (Assert (Compare (FunctionCall 2 len () [(ConstantString "" (Character 1 0 () []))] [] (Integer 4 []) (ConstantInteger 0 (Integer 4 [])) ()) Eq (ConstantInteger 0 (Integer 4 [])) (Logical 4 []) (ConstantLogical .true. (Logical 4 [])) ()) ())] Source Public Implementation () .false. .false.)}) []) diff --git a/tests/reference/asr-tuple1-09972ab.json b/tests/reference/asr-tuple1-09972ab.json index 5ca1d2fd76..6d92f99f84 100644 --- a/tests/reference/asr-tuple1-09972ab.json +++ b/tests/reference/asr-tuple1-09972ab.json @@ -6,7 +6,7 @@ "outfile": null, "outfile_hash": null, "stdout": "asr-tuple1-09972ab.stdout", - "stdout_hash": "7e1ad2f8d9edbff9a4f63b2b456e51707de2217b4b375e10ccb26fa9", + "stdout_hash": "5f7dccb7c07cc502bdfe6dff5e8f9792f48505ac8b10eeaf7ae8183e", "stderr": null, "stderr_hash": null, "returncode": 0 diff --git a/tests/reference/asr-tuple1-09972ab.stdout b/tests/reference/asr-tuple1-09972ab.stdout index 43b3744157..fb662f9c7c 100644 --- a/tests/reference/asr-tuple1-09972ab.stdout +++ b/tests/reference/asr-tuple1-09972ab.stdout @@ -1 +1 @@ -(TranslationUnit (SymbolTable 1 {main_program: (Program (SymbolTable 3 {}) main_program [] []), test_Tuple: (Subroutine (SymbolTable 2 {a1: (Variable 2 a1 Local () () Default (Tuple [(Integer 4 []) (Integer 4 []) (Integer 4 [])]) Source Public Required .false.), a2: (Variable 2 a2 Local () () Default (Tuple [(Character 1 -2 () []) (Character 1 -2 () []) (Character 1 -2 () [])]) Source Public Required .false.), a3: (Variable 2 a3 Local () () Default (Tuple [(Integer 4 []) (Integer 4 []) (Real 4 []) (Character 1 -2 () [])]) Source Public Required .false.), a4: (Variable 2 a4 Local () () Default (Tuple [(Tuple [(Integer 4 []) (Integer 4 []) (Integer 4 [])]) (Tuple [(Integer 4 []) (Integer 4 []) (Integer 4 [])])]) Source Public Required .false.), a5: (Variable 2 a5 Local () () Default (Tuple [(Tuple [(Character 1 -2 () []) (Character 1 -2 () []) (Real 4 [])]) (Tuple [(Character 1 -2 () []) (Integer 4 []) (Real 4 [])])]) Source Public Required .false.), b0: (Variable 2 b0 Local () () Default (Integer 4 []) Source Public Required .false.), b1: (Variable 2 b1 Local () () Default (Integer 4 []) Source Public Required .false.)}) test_Tuple [] [(= (Var 2 a1) (ConstantTuple [(ConstantInteger 1 (Integer 4 [])) (ConstantInteger 2 (Integer 4 [])) (ConstantInteger 3 (Integer 4 []))] (Tuple [(Integer 4 []) (Integer 4 []) (Integer 4 [])])) ()) (= (Var 2 a1) (ConstantTuple [(UnaryOp USub (ConstantInteger 3 (Integer 4 [])) (Integer 4 []) (ConstantInteger -3 (Integer 4 []))) (UnaryOp USub (ConstantInteger 2 (Integer 4 [])) (Integer 4 []) (ConstantInteger -2 (Integer 4 []))) (UnaryOp USub (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) (ConstantInteger -1 (Integer 4 [])))] (Tuple [(Integer 4 []) (Integer 4 []) (Integer 4 [])])) ()) (= (Var 2 a2) (ConstantTuple [(ConstantString "a" (Character 1 1 () [])) (ConstantString "b" (Character 1 1 () [])) (ConstantString "c" (Character 1 1 () []))] (Tuple [(Character 1 1 () []) (Character 1 1 () []) (Character 1 1 () [])])) ()) (= (Var 2 a3) (ConstantTuple [(UnaryOp USub (ConstantInteger 2 (Integer 4 [])) (Integer 4 []) (ConstantInteger -2 (Integer 4 []))) (UnaryOp USub (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) (ConstantInteger -1 (Integer 4 []))) (ConstantReal 0.450000 (Real 8 [])) (ConstantString "d" (Character 1 1 () []))] (Tuple [(Integer 4 []) (Integer 4 []) (Real 8 []) (Character 1 1 () [])])) ()) (= (Var 2 a4) (ConstantTuple [(ConstantTuple [(ConstantInteger 1 (Integer 4 [])) (ConstantInteger 2 (Integer 4 [])) (ConstantInteger 3 (Integer 4 []))] (Tuple [(Integer 4 []) (Integer 4 []) (Integer 4 [])])) (ConstantTuple [(ConstantInteger 4 (Integer 4 [])) (ConstantInteger 5 (Integer 4 [])) (ConstantInteger 6 (Integer 4 []))] (Tuple [(Integer 4 []) (Integer 4 []) (Integer 4 [])]))] (Tuple [(Tuple [(Integer 4 []) (Integer 4 []) (Integer 4 [])]) (Tuple [(Integer 4 []) (Integer 4 []) (Integer 4 [])])])) ()) (= (Var 2 a5) (ConstantTuple [(ConstantTuple [(ConstantString "a" (Character 1 1 () [])) (ConstantString "b" (Character 1 1 () [])) (ConstantReal 3.400000 (Real 8 []))] (Tuple [(Character 1 1 () []) (Character 1 1 () []) (Real 8 [])])) (ConstantTuple [(ConstantString "c" (Character 1 1 () [])) (ConstantInteger 3 (Integer 4 [])) (ConstantReal 5.600000 (Real 8 []))] (Tuple [(Character 1 1 () []) (Integer 4 []) (Real 8 [])]))] (Tuple [(Tuple [(Character 1 1 () []) (Character 1 1 () []) (Real 8 [])]) (Tuple [(Character 1 1 () []) (Integer 4 []) (Real 8 [])])])) ()) (= (Var 2 b0) (ArrayRef 2 a1 [(() (ConstantInteger 0 (Integer 4 [])) ())] (Tuple [(Integer 4 []) (Integer 4 []) (Integer 4 [])]) ()) ()) (= (ConstantTuple [(Var 2 b0) (Var 2 b1)] (Tuple [(Integer 4 []) (Integer 4 [])])) (ConstantTuple [(ArrayRef 2 a1 [(() (ConstantInteger 2 (Integer 4 [])) ())] (Tuple [(Integer 4 []) (Integer 4 []) (Integer 4 [])]) ()) (ArrayRef 2 a1 [(() (ConstantInteger 1 (Integer 4 [])) ())] (Tuple [(Integer 4 []) (Integer 4 []) (Integer 4 [])]) ())] (Tuple [(Tuple [(Integer 4 []) (Integer 4 []) (Integer 4 [])]) (Tuple [(Integer 4 []) (Integer 4 []) (Integer 4 [])])])) ())] Source Public Implementation () .false. .false.)}) []) +(TranslationUnit (SymbolTable 1 {main_program: (Program (SymbolTable 3 {}) main_program [] []), test_Tuple: (Subroutine (SymbolTable 2 {a1: (Variable 2 a1 Local () () Default (Tuple [(Integer 4 []) (Integer 4 []) (Integer 4 [])]) Source Public Required .false.), a2: (Variable 2 a2 Local () () Default (Tuple [(Character 1 -2 () []) (Character 1 -2 () []) (Character 1 -2 () [])]) Source Public Required .false.), a3: (Variable 2 a3 Local () () Default (Tuple [(Integer 4 []) (Integer 4 []) (Real 4 []) (Character 1 -2 () [])]) Source Public Required .false.), a4: (Variable 2 a4 Local () () Default (Tuple [(Tuple [(Integer 4 []) (Integer 4 []) (Integer 4 [])]) (Tuple [(Integer 4 []) (Integer 4 []) (Integer 4 [])])]) Source Public Required .false.), a5: (Variable 2 a5 Local () () Default (Tuple [(Tuple [(Character 1 -2 () []) (Character 1 -2 () []) (Real 4 [])]) (Tuple [(Character 1 -2 () []) (Integer 4 []) (Real 4 [])])]) Source Public Required .false.), b0: (Variable 2 b0 Local () () Default (Integer 4 []) Source Public Required .false.), b1: (Variable 2 b1 Local () () Default (Integer 4 []) Source Public Required .false.)}) test_Tuple [] [(= (Var 2 a1) (ConstantTuple [(ConstantInteger 1 (Integer 4 [])) (ConstantInteger 2 (Integer 4 [])) (ConstantInteger 3 (Integer 4 []))] (Tuple [(Integer 4 []) (Integer 4 []) (Integer 4 [])])) ()) (= (Var 2 a1) (ConstantTuple [(UnaryOp USub (ConstantInteger 3 (Integer 4 [])) (Integer 4 []) (ConstantInteger -3 (Integer 4 []))) (UnaryOp USub (ConstantInteger 2 (Integer 4 [])) (Integer 4 []) (ConstantInteger -2 (Integer 4 []))) (UnaryOp USub (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) (ConstantInteger -1 (Integer 4 [])))] (Tuple [(Integer 4 []) (Integer 4 []) (Integer 4 [])])) ()) (= (Var 2 a2) (ConstantTuple [(ConstantString "a" (Character 1 1 () [])) (ConstantString "b" (Character 1 1 () [])) (ConstantString "c" (Character 1 1 () []))] (Tuple [(Character 1 1 () []) (Character 1 1 () []) (Character 1 1 () [])])) ()) (= (Var 2 a3) (ConstantTuple [(UnaryOp USub (ConstantInteger 2 (Integer 4 [])) (Integer 4 []) (ConstantInteger -2 (Integer 4 []))) (UnaryOp USub (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) (ConstantInteger -1 (Integer 4 []))) (ConstantReal 0.450000 (Real 8 [])) (ConstantString "d" (Character 1 1 () []))] (Tuple [(Integer 4 []) (Integer 4 []) (Real 8 []) (Character 1 1 () [])])) ()) (= (Var 2 a4) (ConstantTuple [(ConstantTuple [(ConstantInteger 1 (Integer 4 [])) (ConstantInteger 2 (Integer 4 [])) (ConstantInteger 3 (Integer 4 []))] (Tuple [(Integer 4 []) (Integer 4 []) (Integer 4 [])])) (ConstantTuple [(ConstantInteger 4 (Integer 4 [])) (ConstantInteger 5 (Integer 4 [])) (ConstantInteger 6 (Integer 4 []))] (Tuple [(Integer 4 []) (Integer 4 []) (Integer 4 [])]))] (Tuple [(Tuple [(Integer 4 []) (Integer 4 []) (Integer 4 [])]) (Tuple [(Integer 4 []) (Integer 4 []) (Integer 4 [])])])) ()) (= (Var 2 a5) (ConstantTuple [(ConstantTuple [(ConstantString "a" (Character 1 1 () [])) (ConstantString "b" (Character 1 1 () [])) (ConstantReal 3.400000 (Real 8 []))] (Tuple [(Character 1 1 () []) (Character 1 1 () []) (Real 8 [])])) (ConstantTuple [(ConstantString "c" (Character 1 1 () [])) (ConstantInteger 3 (Integer 4 [])) (ConstantReal 5.600000 (Real 8 []))] (Tuple [(Character 1 1 () []) (Integer 4 []) (Real 8 [])]))] (Tuple [(Tuple [(Character 1 1 () []) (Character 1 1 () []) (Real 8 [])]) (Tuple [(Character 1 1 () []) (Integer 4 []) (Real 8 [])])])) ()) (= (Var 2 b0) (ArrayRef 2 a1 [(() (BinOp (ConstantInteger 0 (Integer 4 [])) Add (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) () ()) ())] (Tuple [(Integer 4 []) (Integer 4 []) (Integer 4 [])]) ()) ()) (= (ConstantTuple [(Var 2 b0) (Var 2 b1)] (Tuple [(Integer 4 []) (Integer 4 [])])) (ConstantTuple [(ArrayRef 2 a1 [(() (BinOp (ConstantInteger 2 (Integer 4 [])) Add (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) () ()) ())] (Tuple [(Integer 4 []) (Integer 4 []) (Integer 4 [])]) ()) (ArrayRef 2 a1 [(() (BinOp (ConstantInteger 1 (Integer 4 [])) Add (ConstantInteger 1 (Integer 4 [])) (Integer 4 []) () ()) ())] (Tuple [(Integer 4 []) (Integer 4 []) (Integer 4 [])]) ())] (Tuple [(Tuple [(Integer 4 []) (Integer 4 []) (Integer 4 [])]) (Tuple [(Integer 4 []) (Integer 4 []) (Integer 4 [])])])) ())] Source Public Implementation () .false. .false.)}) []) diff --git a/tests/reference/cpp-doconcurrentloop_01-4e9f274.json b/tests/reference/cpp-doconcurrentloop_01-4e9f274.json index e61aa4466a..1a3ac2bcff 100644 --- a/tests/reference/cpp-doconcurrentloop_01-4e9f274.json +++ b/tests/reference/cpp-doconcurrentloop_01-4e9f274.json @@ -6,7 +6,7 @@ "outfile": null, "outfile_hash": null, "stdout": "cpp-doconcurrentloop_01-4e9f274.stdout", - "stdout_hash": "ebbc468b9812b751d5770f98b4f9ea7772a30af7a9b2d30852c302ff", + "stdout_hash": "087551232407a2f7f1ef5cb7faa9581845c5d24a545b2ed1a7b4cac9", "stderr": null, "stderr_hash": null, "returncode": 0 diff --git a/tests/reference/cpp-doconcurrentloop_01-4e9f274.stdout b/tests/reference/cpp-doconcurrentloop_01-4e9f274.stdout index c3e73b2336..8716716885 100644 --- a/tests/reference/cpp-doconcurrentloop_01-4e9f274.stdout +++ b/tests/reference/cpp-doconcurrentloop_01-4e9f274.stdout @@ -30,9 +30,9 @@ void main0() float scalar; scalar = 10.000000; nsize = 1234; - Kokkos::parallel_for(Kokkos::RangePolicy(1, nsize - 1+1), KOKKOS_LAMBDA(const long i) { - a[i-1] = 5.000000; - b[i-1] = 5.000000; + Kokkos::parallel_for(Kokkos::RangePolicy(0, nsize - 1+1), KOKKOS_LAMBDA(const long i) { + a[i + 1-1] = 5.000000; + b[i + 1-1] = 5.000000; }); triad(a, b, scalar, c); std::cout << "End Stream Triad" << std::endl; @@ -42,8 +42,8 @@ void triad(const Kokkos::View &a, const Kokkos::View &b, float s { int N; N = 1234; - Kokkos::parallel_for(Kokkos::RangePolicy(1, N - 1+1), KOKKOS_LAMBDA(const long i) { - c[i-1] = a[i-1] + scalar*b[i-1]; + Kokkos::parallel_for(Kokkos::RangePolicy(0, N - 1+1), KOKKOS_LAMBDA(const long i) { + c[i + 1-1] = a[i + 1-1] + scalar*b[i + 1-1]; }); }