diff --git a/mypyc/ir/rtypes.py b/mypyc/ir/rtypes.py index 2490da6fe51f..39dce61c2c76 100644 --- a/mypyc/ir/rtypes.py +++ b/mypyc/ir/rtypes.py @@ -276,10 +276,12 @@ def __hash__(self) -> int: if IS_32_BIT_PLATFORM: c_size_t_rprimitive = uint32_rprimitive - c_pyssize_t_rprimitive = int32_rprimitive + c_pyssize_t_rprimitive = RPrimitive('native_int', is_unboxed=True, is_refcounted=False, + ctype='int32_t', size=4) else: c_size_t_rprimitive = uint64_rprimitive - c_pyssize_t_rprimitive = int64_rprimitive + c_pyssize_t_rprimitive = RPrimitive('native_int', is_unboxed=True, is_refcounted=False, + ctype='int64_t', size=8) # Low level pointer, represented as integer in C backends pointer_rprimitive = RPrimitive('ptr', is_unboxed=True, is_refcounted=False, @@ -338,11 +340,13 @@ def is_short_int_rprimitive(rtype: RType) -> bool: def is_int32_rprimitive(rtype: RType) -> bool: - return rtype is int32_rprimitive + return (rtype is int32_rprimitive or + (rtype is c_pyssize_t_rprimitive and rtype._ctype == 'int32_t')) def is_int64_rprimitive(rtype: RType) -> bool: - return rtype is int64_rprimitive + return (rtype is int64_rprimitive or + (rtype is c_pyssize_t_rprimitive and rtype._ctype == 'int64_t')) def is_uint32_rprimitive(rtype: RType) -> bool: diff --git a/mypyc/test/test_analysis.py b/mypyc/test/test_analysis.py index e9088d7c1138..82317ef34765 100644 --- a/mypyc/test/test_analysis.py +++ b/mypyc/test/test_analysis.py @@ -15,7 +15,7 @@ from mypyc.ir.func_ir import all_values from mypyc.test.testutil import ( ICODE_GEN_BUILTINS, use_custom_builtins, MypycDataSuite, build_ir_for_single_file, - assert_test_output, replace_native_int + assert_test_output ) files = [ @@ -32,7 +32,6 @@ def run_case(self, testcase: DataDrivenTestCase) -> None: """Perform a data-flow analysis test case.""" with use_custom_builtins(os.path.join(self.data_prefix, ICODE_GEN_BUILTINS), testcase): - testcase.output = replace_native_int(testcase.output) try: ir = build_ir_for_single_file(testcase.input) except CompileError as e: diff --git a/mypyc/test/test_exceptions.py b/mypyc/test/test_exceptions.py index a313e794bab6..67df5ce5c38a 100644 --- a/mypyc/test/test_exceptions.py +++ b/mypyc/test/test_exceptions.py @@ -16,7 +16,7 @@ from mypyc.transform.refcount import insert_ref_count_opcodes from mypyc.test.testutil import ( ICODE_GEN_BUILTINS, use_custom_builtins, MypycDataSuite, build_ir_for_single_file, - assert_test_output, remove_comment_lines, replace_native_int + assert_test_output, remove_comment_lines ) files = [ @@ -32,7 +32,6 @@ def run_case(self, testcase: DataDrivenTestCase) -> None: """Perform a runtime checking transformation test case.""" with use_custom_builtins(os.path.join(self.data_prefix, ICODE_GEN_BUILTINS), testcase): expected_output = remove_comment_lines(testcase.output) - expected_output = replace_native_int(expected_output) try: ir = build_ir_for_single_file(testcase.input) except CompileError as e: diff --git a/mypyc/test/test_irbuild.py b/mypyc/test/test_irbuild.py index 32f0e758c91c..8c7b03f8bc39 100644 --- a/mypyc/test/test_irbuild.py +++ b/mypyc/test/test_irbuild.py @@ -10,7 +10,7 @@ from mypyc.ir.pprint import format_func from mypyc.test.testutil import ( ICODE_GEN_BUILTINS, use_custom_builtins, MypycDataSuite, build_ir_for_single_file, - assert_test_output, remove_comment_lines, replace_native_int, replace_word_size, + assert_test_output, remove_comment_lines, replace_word_size, infer_ir_build_options_from_test_name ) @@ -50,7 +50,6 @@ def run_case(self, testcase: DataDrivenTestCase) -> None: return with use_custom_builtins(os.path.join(self.data_prefix, ICODE_GEN_BUILTINS), testcase): expected_output = remove_comment_lines(testcase.output) - expected_output = replace_native_int(expected_output) expected_output = replace_word_size(expected_output) name = testcase.name try: diff --git a/mypyc/test/test_refcount.py b/mypyc/test/test_refcount.py index 9e96d31e224a..2c9502330cd5 100644 --- a/mypyc/test/test_refcount.py +++ b/mypyc/test/test_refcount.py @@ -16,7 +16,7 @@ from mypyc.transform.uninit import insert_uninit_checks from mypyc.test.testutil import ( ICODE_GEN_BUILTINS, use_custom_builtins, MypycDataSuite, build_ir_for_single_file, - assert_test_output, remove_comment_lines, replace_native_int, replace_word_size, + assert_test_output, remove_comment_lines, replace_word_size, infer_ir_build_options_from_test_name ) @@ -38,7 +38,6 @@ def run_case(self, testcase: DataDrivenTestCase) -> None: return with use_custom_builtins(os.path.join(self.data_prefix, ICODE_GEN_BUILTINS), testcase): expected_output = remove_comment_lines(testcase.output) - expected_output = replace_native_int(expected_output) expected_output = replace_word_size(expected_output) try: ir = build_ir_for_single_file(testcase.input, options) diff --git a/mypyc/test/testutil.py b/mypyc/test/testutil.py index 0c64a35fd052..7ef1f941aa41 100644 --- a/mypyc/test/testutil.py +++ b/mypyc/test/testutil.py @@ -215,12 +215,6 @@ def fudge_dir_mtimes(dir: str, delta: int) -> None: os.utime(path, times=(new_mtime, new_mtime)) -def replace_native_int(text: List[str]) -> List[str]: - """Replace native_int with platform specific ints""" - int_format_str = 'int32' if IS_32_BIT_PLATFORM else 'int64' - return [s.replace('native_int', int_format_str) for s in text] - - def replace_word_size(text: List[str]) -> List[str]: """Replace WORDSIZE with platform specific word sizes""" result = []