Skip to content
Open
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
16 changes: 3 additions & 13 deletions src/irx/builders/llvmliteir.py
Original file line number Diff line number Diff line change
Expand Up @@ -187,8 +187,6 @@ class VariablesLLVM:
type: ir.types.Type
BOOLEAN_TYPE:
type: ir.types.Type
STRING_TYPE:
type: ir.types.Type
ASCII_STRING_TYPE:
type: ir.types.Type
UTF8_STRING_TYPE:
Expand Down Expand Up @@ -220,7 +218,6 @@ class VariablesLLVM:
INT32_TYPE: ir.types.Type
VOID_TYPE: ir.types.Type
BOOLEAN_TYPE: ir.types.Type
STRING_TYPE: ir.types.Type
ASCII_STRING_TYPE: ir.types.Type
UTF8_STRING_TYPE: ir.types.Type
TIME_TYPE: ir.types.Type
Expand Down Expand Up @@ -263,12 +260,8 @@ def get_data_type(self, type_name: str) -> ir.types.Type:
return self.INT64_TYPE
elif type_name == "char":
return self.INT8_TYPE
elif type_name == "string":
return self.STRING_TYPE
elif type_name == "stringascii":
elif type_name in ("string", "stringascii", "utf8string"):
return self.ASCII_STRING_TYPE
elif type_name == "utf8string":
return self.UTF8_STRING_TYPE
elif type_name == "nonetype":
return self.VOID_TYPE

Expand Down Expand Up @@ -418,11 +411,8 @@ def initialize(self) -> None:
self._llvm.INT32_TYPE = ir.IntType(32)
self._llvm.INT64_TYPE = ir.IntType(64)
self._llvm.VOID_TYPE = ir.VoidType()
self._llvm.STRING_TYPE = ir.LiteralStructType(
[ir.IntType(32), ir.IntType(8).as_pointer()]
)
self._llvm.ASCII_STRING_TYPE = ir.IntType(8).as_pointer()
self._llvm.UTF8_STRING_TYPE = self._llvm.STRING_TYPE
self._llvm.UTF8_STRING_TYPE = self._llvm.ASCII_STRING_TYPE
# Composite types
self._llvm.TIME_TYPE = ir.LiteralStructType(
[
Expand Down Expand Up @@ -2942,7 +2932,7 @@ def visit(self, node: system.Cast) -> None:

elif target_type in (
self._llvm.ASCII_STRING_TYPE,
self._llvm.STRING_TYPE,
self._llvm.UTF8_STRING_TYPE,
):
if is_int_type(value.type):
arg, fmt_str = self._normalize_int_for_printf(value)
Expand Down
2 changes: 1 addition & 1 deletion tests/test_llvmlite_helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ def test_get_data_type_aliases_and_invalid() -> None:
assert llvm_vars.get_data_type("float16") == llvm_vars.FLOAT16_TYPE
assert llvm_vars.get_data_type("double") == llvm_vars.DOUBLE_TYPE
assert llvm_vars.get_data_type("char") == llvm_vars.INT8_TYPE
assert llvm_vars.get_data_type("utf8string") == llvm_vars.UTF8_STRING_TYPE
assert llvm_vars.get_data_type("utf8string") == llvm_vars.ASCII_STRING_TYPE

with pytest.raises(Exception, match="not valid"):
llvm_vars.get_data_type("not-a-type")
Expand Down
Loading