Skip to content

Commit 00faedb

Browse files
committed
Fix constname usage
1 parent ebf8b44 commit 00faedb

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

src/libasr/codegen/asr_to_c_cpp.h

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -628,9 +628,9 @@ R"(#include <stdio.h>
628628
ASR::TupleConstant_t *tup_c = ASR::down_cast<ASR::TupleConstant_t>(x.m_target);
629629
std::string src_tmp = "", val_name = "";
630630
if (ASR::is_a<ASR::TupleConstant_t>(*x.m_value)) {
631+
val_name = const_name + std::to_string(const_list_count);
631632
self().visit_TupleConstant(*ASR::down_cast<ASR::TupleConstant_t>(x.m_value));
632633
src_tmp += src;
633-
val_name = const_name;
634634
} else if (ASR::is_a<ASR::FunctionCall_t>(*x.m_value)) {
635635
self().visit_FunctionCall(*ASR::down_cast<ASR::FunctionCall_t>(x.m_value));
636636
ASR::Tuple_t* t = ASR::down_cast<ASR::Tuple_t>(tup_c->m_type);
@@ -645,8 +645,10 @@ R"(#include <stdio.h>
645645
val_name = src;
646646
}
647647
for (size_t i=0; i<tup_c->n_elements; i++) {
648-
visit_Var(*ASR::down_cast<ASR::Var_t>(tup_c->m_elements[i]));
649-
src_tmp += indent + src + " = " + val_name + ".element_" + std::to_string(i) + ";\n";
648+
self().visit_expr(*tup_c->m_elements[i]);
649+
ASR::ttype_t *t = ASRUtils::expr_type(tup_c->m_elements[i]);
650+
src_tmp += indent + c_ds_api->get_deepcopy(t,
651+
val_name + ".element_" + std::to_string(i), src) + "\n";
650652
}
651653
src = src_tmp;
652654
return;
@@ -787,6 +789,7 @@ R"(#include <stdio.h>
787789
const_name += std::to_string(const_list_count);
788790
const_list_count += 1;
789791
const_name = current_scope->get_unique_name(const_name);
792+
std::string var_name = const_name;
790793
ASR::Tuple_t* t = ASR::down_cast<ASR::Tuple_t>(x.m_type);
791794
std::string tuple_type_c = c_ds_api->get_tuple_type(t);
792795
std::string src_tmp = "";
@@ -795,11 +798,11 @@ R"(#include <stdio.h>
795798
self().visit_expr(*x.m_elements[i]);
796799
std::string ele = ".element_" + std::to_string(i);
797800
if (ASR::is_a<ASR::Character_t>(*t->m_type[i])) {
798-
src_tmp += indent + const_name + ele + " = (char*) malloc(40 * sizeof(char));\n";
801+
src_tmp += indent + var_name + ele + " = (char*) malloc(40 * sizeof(char));\n";
799802
}
800-
src_tmp += indent + c_ds_api->get_deepcopy(t->m_type[i], src, const_name + ele) + "\n";
803+
src_tmp += indent + c_ds_api->get_deepcopy(t->m_type[i], src, var_name + ele) + "\n";
801804
}
802-
src_tmp += indent + const_name + ".length" + " = " + std::to_string(x.n_elements) + ";\n";
805+
src_tmp += indent + var_name + ".length" + " = " + std::to_string(x.n_elements) + ";\n";
803806
src = src_tmp;
804807
}
805808

0 commit comments

Comments
 (0)