Skip to content

Commit c02cabc

Browse files
authored
Merge pull request #2863 from swamishiju/string
Better handle string argument functions
2 parents f76c58d + 60d85ae commit c02cabc

File tree

7 files changed

+27
-27
lines changed

7 files changed

+27
-27
lines changed

integration_tests/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -804,7 +804,7 @@ RUN(NAME test_statistics_01 LABELS cpython llvm llvm_jit NOFAST)
804804
# RUN(NAME test_statistics_02 LABELS cpython llvm llvm_jit NOFAST REQ_PY_VER 3.10)
805805
# RUN(NAME test_attributes LABELS cpython llvm llvm_jit)
806806
# RUN(NAME test_str_attributes LABELS cpython llvm llvm_jit c)
807-
# RUN(NAME kwargs_01 LABELS cpython llvm llvm_jit NOFAST) # renable c # post sync
807+
RUN(NAME kwargs_01 LABELS cpython llvm llvm_jit NOFAST) # renable c # post sync
808808
# RUN(NAME def_func_01 LABELS cpython llvm llvm_jit) # renable c # post sync
809809

810810
RUN(NAME func_inline_01 LABELS llvm llvm_jit c wasm)

libasr

Submodule libasr updated 55 files

src/lpython/semantics/python_ast_to_asr.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -572,7 +572,7 @@ class CommonVisitor : public AST::BaseVisitor<StructType> {
572572
} else {
573573
sym = es_s;
574574
}
575-
return ASRUtils::TYPE(ASRUtils::make_StructType_t_util(al, loc, sym));
575+
return ASRUtils::make_StructType_t_util(al, loc, sym);
576576
}
577577
default: {
578578
return return_type;
@@ -841,7 +841,7 @@ class CommonVisitor : public AST::BaseVisitor<StructType> {
841841
ASR::symbol_t *der_sym = ASRUtils::symbol_get_past_external(s);
842842
if( der_sym ) {
843843
if ( ASR::is_a<ASR::Struct_t>(*der_sym) ) {
844-
type = ASRUtils::TYPE(ASRUtils::make_StructType_t_util(al, loc, s));
844+
type = ASRUtils::make_StructType_t_util(al, loc, s);
845845
type = ASRUtils::make_Array_t_util(al, loc, type, dims.p, dims.size(), abi, is_argument);
846846
} else if( ASR::is_a<ASR::Enum_t>(*der_sym) ) {
847847
type = ASRUtils::TYPE(ASR::make_EnumType_t(al, loc, s));
@@ -1307,7 +1307,7 @@ class CommonVisitor : public AST::BaseVisitor<StructType> {
13071307
if ( n_kwargs>0 ) {
13081308
throw SemanticError("Keyword args are not supported", loc);
13091309
}
1310-
ASR::ttype_t* der_type = ASRUtils::TYPE(ASRUtils::make_StructType_t_util(al, loc, stemp));
1310+
ASR::ttype_t* der_type = ASRUtils::make_StructType_t_util(al, loc, stemp);
13111311
return ASR::make_StructConstructor_t(al, loc, stemp, args.p,
13121312
args.size(), der_type, nullptr);
13131313
}
@@ -1342,7 +1342,7 @@ class CommonVisitor : public AST::BaseVisitor<StructType> {
13421342
for (size_t i = args.size(); i < st->n_members; i++) {
13431343
args.push_back(al, st->m_initializers[i]);
13441344
}
1345-
ASR::ttype_t* der_type = ASRUtils::TYPE(ASRUtils::make_StructType_t_util(al, loc, stemp));
1345+
ASR::ttype_t* der_type = ASRUtils::make_StructType_t_util(al, loc, stemp);
13461346
return ASR::make_StructConstructor_t(al, loc, stemp, args.p, args.size(), der_type, nullptr);
13471347
} else if( ASR::is_a<ASR::Enum_t>(*s) ) {
13481348
Vec<ASR::expr_t*> args_new;
@@ -1955,7 +1955,7 @@ class CommonVisitor : public AST::BaseVisitor<StructType> {
19551955
" str annotation", loc);
19561956
}
19571957
//TODO: Change the returned type from Class to StructType
1958-
return ASRUtils::TYPE(ASRUtils::make_StructType_t_util(al, loc, sym, false));
1958+
return ASRUtils::make_StructType_t_util(al, loc, sym, false);
19591959
}
19601960

19611961
throw SemanticError("Only Name, Subscript, and Call supported for now in annotation of annotated assignment.", loc);
@@ -3485,7 +3485,7 @@ class CommonVisitor : public AST::BaseVisitor<StructType> {
34853485
std::string self_name = x.m_args.m_args[0].m_arg;
34863486
ASR::symbol_t* sym = current_scope->get_symbol(self_name);
34873487
ASR::Variable_t* self_var = ASR::down_cast<ASR::Variable_t>(sym);
3488-
self_var->m_type = ASRUtils::TYPE(ASRUtils::make_StructType_t_util(al,loc, class_sym));
3488+
self_var->m_type = ASRUtils::make_StructType_t_util(al,loc, class_sym);
34893489
current_scope = parent_scope;
34903490
}
34913491

@@ -5361,7 +5361,7 @@ class BodyVisitor : public CommonVisitor<BodyVisitor> {
53615361
first_arg.loc = loc;
53625362
ASR::symbol_t* self_sym = current_scope->get_symbol("self");
53635363
first_arg.m_value = ASRUtils::EXPR(ASR::make_Var_t(al,loc,self_sym));
5364-
ASR::ttype_t* target_type = ASRUtils::TYPE(ASRUtils::make_StructType_t_util(al,loc,parent_sym));
5364+
ASR::ttype_t* target_type = ASRUtils::make_StructType_t_util(al,loc,parent_sym);
53655365
cast_helper(target_type, first_arg.m_value, x.base.base.loc, true);
53665366
Vec<ASR::call_arg_t> args_w_first; args_w_first.reserve(al,1);
53675367
args_w_first.push_back(al, first_arg);
@@ -6354,7 +6354,7 @@ class BodyVisitor : public CommonVisitor<BodyVisitor> {
63546354
s2c(al, struct_member_name), ASR::accessType::Public));
63556355
current_scope->add_symbol(import_name, import_struct_member);
63566356
}
6357-
member_var_type = ASRUtils::TYPE(ASRUtils::make_StructType_t_util(al, loc, import_struct_member));
6357+
member_var_type = ASRUtils::make_StructType_t_util(al, loc, import_struct_member);
63586358
}
63596359
}
63606360
}
@@ -6458,7 +6458,7 @@ class BodyVisitor : public CommonVisitor<BodyVisitor> {
64586458
" found in " + std::string(der_type->m_name),
64596459
loc);
64606460
} else if ( !member_found && der_type->m_parent ) {
6461-
ASR::ttype_t* parent_type = ASRUtils::TYPE(ASRUtils::make_StructType_t_util(al, loc,der_type->m_parent));
6461+
ASR::ttype_t* parent_type = ASRUtils::make_StructType_t_util(al, loc,der_type->m_parent);
64626462
visit_AttributeUtil(parent_type,attr_char,t,loc);
64636463
return;
64646464
}
@@ -6495,7 +6495,7 @@ class BodyVisitor : public CommonVisitor<BodyVisitor> {
64956495
s2c(al, struct_member_name), ASR::accessType::Public));
64966496
current_scope->add_symbol(import_name, import_struct_member);
64976497
}
6498-
member_var_type = ASRUtils::TYPE(ASRUtils::make_StructType_t_util(al, loc, import_struct_member));
6498+
member_var_type = ASRUtils::make_StructType_t_util(al, loc, import_struct_member);
64996499
}
65006500
}
65016501
}

tests/reference/llvm-bindc_01-c984f09.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"outfile": null,
77
"outfile_hash": null,
88
"stdout": "llvm-bindc_01-c984f09.stdout",
9-
"stdout_hash": "b59c35903bc9fa613e1e9642c20891d7893465f569262418763cc367",
9+
"stdout_hash": "8e6909147fa7483f9dbcc5139bb36d53bdb17252c55669e8d75bef66",
1010
"stderr": null,
1111
"stderr_hash": null,
1212
"returncode": 0

tests/reference/llvm-bindc_01-c984f09.stdout

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
; ModuleID = 'LFortran'
22
source_filename = "LFortran"
33

4-
@queries = global void* null
5-
@x = global i16* null
4+
@__module___main___queries = global void* null
5+
@__module___main___x = global i16* null
66
@0 = private unnamed_addr constant [2 x i8] c"\0A\00", align 1
77
@serialization_info = private unnamed_addr constant [8 x i8] c"CPtr,I2\00", align 1
88
@1 = private unnamed_addr constant [5 x i8] c"%s%s\00", align 1
@@ -11,10 +11,10 @@ source_filename = "LFortran"
1111

1212
define void @__module___main_____main__global_stmts() {
1313
.entry:
14-
%0 = load void*, void** @queries, align 8
14+
%0 = load void*, void** @__module___main___queries, align 8
1515
%1 = bitcast void* %0 to i16*
16-
store i16* %1, i16** @x, align 8
17-
%2 = call i8* (i8*, i8*, i32, i32, ...) @_lcompilers_string_format_fortran(i8* null, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @serialization_info, i32 0, i32 0), i32 0, i32 0, void** @queries, i16** @x)
16+
store i16* %1, i16** @__module___main___x, align 8
17+
%2 = call i8* (i8*, i8*, i32, i32, ...) @_lcompilers_string_format_fortran(i8* null, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @serialization_info, i32 0, i32 0), i32 0, i32 0, void** @__module___main___queries, i16** @__module___main___x)
1818
call void (i8*, ...) @_lfortran_printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @1, i32 0, i32 0), i8* %2, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @0, i32 0, i32 0))
1919
call void @__module___main___test_issue_1781()
2020
br label %return

tests/reference/llvm-print_04-443a8d8.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"outfile": null,
77
"outfile_hash": null,
88
"stdout": "llvm-print_04-443a8d8.stdout",
9-
"stdout_hash": "a2870505fcc8307104191937696b63aca644e3513fa28d45a69648f0",
9+
"stdout_hash": "6c1392ce3559ea53f3111fb9fb1686cdc78907114f6d2dae50e460fd",
1010
"stderr": null,
1111
"stderr_hash": null,
1212
"returncode": 0

tests/reference/llvm-print_04-443a8d8.stdout

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
; ModuleID = 'LFortran'
22
source_filename = "LFortran"
33

4-
@u = global i64 -922337203685477580
5-
@x = global i32 -2147483648
6-
@y = global i16 -32768
7-
@z = global i8 -128
4+
@__module___main___u = global i64 -922337203685477580
5+
@__module___main___x = global i32 -2147483648
6+
@__module___main___y = global i16 -32768
7+
@__module___main___z = global i8 -128
88
@0 = private unnamed_addr constant [2 x i8] c"\0A\00", align 1
99
@serialization_info = private unnamed_addr constant [3 x i8] c"I8\00", align 1
1010
@1 = private unnamed_addr constant [5 x i8] c"%s%s\00", align 1
@@ -20,13 +20,13 @@ source_filename = "LFortran"
2020

2121
define void @__module___main_____main__global_stmts() {
2222
.entry:
23-
%0 = call i8* (i8*, i8*, i32, i32, ...) @_lcompilers_string_format_fortran(i8* null, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @serialization_info, i32 0, i32 0), i32 0, i32 0, i64* @u)
23+
%0 = call i8* (i8*, i8*, i32, i32, ...) @_lcompilers_string_format_fortran(i8* null, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @serialization_info, i32 0, i32 0), i32 0, i32 0, i64* @__module___main___u)
2424
call void (i8*, ...) @_lfortran_printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @1, i32 0, i32 0), i8* %0, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @0, i32 0, i32 0))
25-
%1 = call i8* (i8*, i8*, i32, i32, ...) @_lcompilers_string_format_fortran(i8* null, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @serialization_info.1, i32 0, i32 0), i32 0, i32 0, i32* @x)
25+
%1 = call i8* (i8*, i8*, i32, i32, ...) @_lcompilers_string_format_fortran(i8* null, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @serialization_info.1, i32 0, i32 0), i32 0, i32 0, i32* @__module___main___x)
2626
call void (i8*, ...) @_lfortran_printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @3, i32 0, i32 0), i8* %1, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @2, i32 0, i32 0))
27-
%2 = call i8* (i8*, i8*, i32, i32, ...) @_lcompilers_string_format_fortran(i8* null, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @serialization_info.2, i32 0, i32 0), i32 0, i32 0, i16* @y)
27+
%2 = call i8* (i8*, i8*, i32, i32, ...) @_lcompilers_string_format_fortran(i8* null, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @serialization_info.2, i32 0, i32 0), i32 0, i32 0, i16* @__module___main___y)
2828
call void (i8*, ...) @_lfortran_printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @5, i32 0, i32 0), i8* %2, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @4, i32 0, i32 0))
29-
%3 = call i8* (i8*, i8*, i32, i32, ...) @_lcompilers_string_format_fortran(i8* null, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @serialization_info.3, i32 0, i32 0), i32 0, i32 0, i8* @z)
29+
%3 = call i8* (i8*, i8*, i32, i32, ...) @_lcompilers_string_format_fortran(i8* null, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @serialization_info.3, i32 0, i32 0), i32 0, i32 0, i8* @__module___main___z)
3030
call void (i8*, ...) @_lfortran_printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @7, i32 0, i32 0), i8* %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @6, i32 0, i32 0))
3131
br label %return
3232

0 commit comments

Comments
 (0)