Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions integration_tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -165,15 +165,15 @@ RUN(NAME expr_05 LABELS cpython llvm c)
RUN(NAME expr_06 LABELS cpython llvm c)
RUN(NAME expr_07 LABELS cpython llvm c)
RUN(NAME expr_08 LABELS llvm c)
RUN(NAME expr_09 LABELS cpython llvm)
RUN(NAME expr_09 LABELS cpython llvm c)
RUN(NAME expr_10 LABELS cpython llvm c)
RUN(NAME expr_11 LABELS cpython llvm c wasm)
RUN(NAME expr_12 LABELS llvm c)
RUN(NAME expr_13 LABELS llvm c
EXTRAFILES expr_13b.c)
RUN(NAME loop_01 LABELS cpython llvm c)
RUN(NAME print_02 LABELS cpython llvm)
RUN(NAME test_types_01 LABELS cpython llvm)
RUN(NAME test_types_01 LABELS cpython llvm c)
RUN(NAME test_str_01 LABELS cpython llvm c)
RUN(NAME test_str_02 LABELS cpython llvm c)
RUN(NAME test_str_03 LABELS cpython llvm c)
Expand Down Expand Up @@ -222,7 +222,7 @@ RUN(NAME test_builtin_abs LABELS cpython llvm c)
RUN(NAME test_builtin_bool LABELS cpython llvm c)
RUN(NAME test_builtin_pow LABELS cpython llvm)
RUN(NAME test_builtin_int LABELS cpython llvm c)
RUN(NAME test_builtin_len LABELS cpython llvm)
RUN(NAME test_builtin_len LABELS cpython llvm c)
RUN(NAME test_builtin_str LABELS cpython llvm c)
RUN(NAME test_builtin_oct LABELS cpython llvm c)
RUN(NAME test_builtin_hex LABELS cpython llvm c)
Expand Down Expand Up @@ -293,7 +293,7 @@ RUN(NAME generics_array_02 LABELS cpython llvm)
RUN(NAME generics_array_03 LABELS cpython llvm)
RUN(NAME generics_list_01 LABELS cpython llvm)
RUN(NAME test_statistics LABELS cpython llvm)
RUN(NAME test_str_attributes LABELS cpython llvm)
RUN(NAME test_str_attributes LABELS cpython llvm c)
RUN(NAME kwargs_01 LABELS cpython llvm)
RUN(NAME test_01_goto LABELS cpython llvm c)

Expand Down
6 changes: 5 additions & 1 deletion src/libasr/codegen/asr_to_c_cpp.h
Original file line number Diff line number Diff line change
Expand Up @@ -566,7 +566,11 @@ R"(#include <stdio.h>

void visit_StringOrd(const ASR::StringOrd_t& x) {
self().visit_expr(*x.m_arg);
src = "(int)" + src + "[0]";
if (ASR::is_a<ASR::StringConstant_t>(*x.m_arg)) {
src = "(int)" + src + "[0]";
} else {
src = "_lfortran_str_ord_c(" + src + ")";
}
}

void visit_StringRepeat(const ASR::StringRepeat_t &x) {
Expand Down
5 changes: 5 additions & 0 deletions src/libasr/runtime/lfortran_intrinsics.c
Original file line number Diff line number Diff line change
Expand Up @@ -873,6 +873,11 @@ LFORTRAN_API int _lfortran_str_ord(char** s)
return (*s)[0];
}

LFORTRAN_API int _lfortran_str_ord_c(char* s)
{
return s[0];
}

LFORTRAN_API char* _lfortran_str_chr(int val)
{
char* dest_char = (char*)malloc(2);
Expand Down
1 change: 1 addition & 0 deletions src/libasr/runtime/lfortran_intrinsics.h
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,7 @@ LFORTRAN_API char* _lfortran_strrepeat_c(char* s, int32_t n);
LFORTRAN_API void _lfortran_strcat(char** s1, char** s2, char** dest);
LFORTRAN_API int _lfortran_str_len(char** s);
LFORTRAN_API int _lfortran_str_ord(char** s);
LFORTRAN_API int _lfortran_str_ord_c(char* s);
LFORTRAN_API char* _lfortran_str_chr(int c);
LFORTRAN_API int _lfortran_str_to_int(char** s);
LFORTRAN_API char* _lfortran_malloc(int size);
Expand Down
2 changes: 1 addition & 1 deletion src/runtime/lpython_builtin.py
Original file line number Diff line number Diff line change
Expand Up @@ -641,7 +641,7 @@ def _lpython_str_lower(x: str) -> str:
def _lpython_str_find(s: str, sub: str) -> i32:
s_len :i32; sub_len :i32; flag: bool; _len: i32;
res: i32; i: i32;
lps: list[i32]
lps: list[i32] = []
s_len = len(s)
sub_len = len(sub)
flag = False
Expand Down