Skip to content
Snippets Groups Projects
Commit 7790ec6f authored by Frederik Hennig's avatar Frederik Hennig
Browse files

Merge branch 'fhennig/revert-literals-patch' into 'backend-rework'

Refine printing of integer literals

See merge request !389
parents be07c320 e66dfae5
1 merge request!389Refine printing of integer literals
Pipeline #66388 passed with stages
in 2 minutes and 39 seconds
...@@ -483,7 +483,20 @@ class PsIntegerType(PsScalarType, ABC): ...@@ -483,7 +483,20 @@ class PsIntegerType(PsScalarType, ABC):
if not isinstance(value, np_dtype): if not isinstance(value, np_dtype):
raise PsTypeError(f"Given value {value} is not of required type {np_dtype}") raise PsTypeError(f"Given value {value} is not of required type {np_dtype}")
unsigned_suffix = "" if self.signed else "u" unsigned_suffix = "" if self.signed else "u"
return f"(({self._c_type_without_const()}) {value}{unsigned_suffix})"
match self.width:
case w if w < 32:
# Plain integer literals get at least type `int`, which is 32 bit in all relevant cases
# So we need to explicitly cast to smaller types
return f"(({self._c_type_without_const()}) {value}{unsigned_suffix})"
case 32:
# No suffix here - becomes `int`, which is 32 bit
return f"{value}{unsigned_suffix}"
case 64:
# LL suffix: `long long` is the only type guaranteed to be 64 bit wide
return f"{value}{unsigned_suffix}LL"
case _:
assert False, "unreachable code"
def create_constant(self, value: Any) -> Any: def create_constant(self, value: Any) -> Any:
np_type = self.NUMPY_TYPES[self._width] np_type = self.NUMPY_TYPES[self._width]
......
...@@ -54,6 +54,6 @@ def test_literals(): ...@@ -54,6 +54,6 @@ def test_literals():
print(code) print(code)
assert "const double x = C;" in code assert "const double x = C;" in code
assert "CELLS[((int64_t) 0)]" in code assert "CELLS[0LL]" in code
assert "CELLS[((int64_t) 1)]" in code assert "CELLS[1LL]" in code
assert "CELLS[((int64_t) 2)]" in code assert "CELLS[2LL]" in code
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment