From 46c610d6e59e0becad790c795f4b1ff159da3a79 Mon Sep 17 00:00:00 2001 From: Tetralux <1348560+Tetralux@users.noreply.github.com> Date: Wed, 16 Jan 2019 17:07:43 +0000 Subject: Fix printing IR of integer as a pointer with endianness. When converting an integer value into a pointer and writing out the IR for it in 'ir_print_exact_value', 'is_type_integer_endian_{little,big}' did not correct handle being asked about pointer types. They now reply with whether the endianness of 'uintptr' matches the endianness being asked about. --- src/types.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/types.cpp') diff --git a/src/types.cpp b/src/types.cpp index eb850fa66..52c06ef71 100644 --- a/src/types.cpp +++ b/src/types.cpp @@ -1041,6 +1041,8 @@ bool is_type_integer_endian_big(Type *t) { return build_context.endian_kind == TargetEndian_Big; } else if (t->kind == Type_BitSet) { return is_type_integer_endian_big(bit_set_to_int(t)); + } else if (t->kind == Type_Pointer) { + return is_type_integer_endian_big(&basic_types[Basic_uintptr]); } else { GB_PANIC("Unsupported type: %s", type_to_string(t)); } @@ -1058,6 +1060,8 @@ bool is_type_integer_endian_little(Type *t) { return build_context.endian_kind == TargetEndian_Little; } else if (t->kind == Type_BitSet) { return is_type_integer_endian_little(bit_set_to_int(t)); + } else if (t->kind == Type_Pointer) { + return is_type_integer_endian_little(&basic_types[Basic_uintptr]); } else { GB_PANIC("Unsupported type: %s", type_to_string(t)); } -- cgit v1.2.3