From 71c644f430edbae114396c075baab330889c698c Mon Sep 17 00:00:00 2001 From: Philip Herron Date: Thu, 24 Jun 2021 15:56:12 +0100 Subject: Change unit-type from void_type_node to a zero sized unsigned integer GCC does not support unit-type when it is represented as void, unsigned integer of precision zero seems to work. The missing piece here is that functions with return type of unit are still represented by a void type node there is an ICE in ``` 0x1d551d5 wi::min_value(unsigned int,signop) ../../gccrs/gcc/wide-int.cc:346 ``` Addresses #155 --- gcc/rust/backend/rust-compile-context.h | 4 ++-- gcc/rust/backend/rust-compile-tyty.h | 6 ++---- 2 files changed, 4 insertions(+), 6 deletions(-) (limited to 'gcc/rust/backend') diff --git a/gcc/rust/backend/rust-compile-context.h b/gcc/rust/backend/rust-compile-context.h index 5bd1e96..e0c9352 100644 --- a/gcc/rust/backend/rust-compile-context.h +++ b/gcc/rust/backend/rust-compile-context.h @@ -423,7 +423,7 @@ public: { if (type.num_fields () == 0) { - translated = ctx->get_backend ()->void_type (); + translated = ctx->get_backend ()->unit_type (); return; } @@ -544,7 +544,7 @@ public: void visit (TyTy::NeverType &) override { - translated = ctx->get_backend ()->void_type (); + translated = ctx->get_backend ()->unit_type (); } private: diff --git a/gcc/rust/backend/rust-compile-tyty.h b/gcc/rust/backend/rust-compile-tyty.h index ba98ac0..8576235 100644 --- a/gcc/rust/backend/rust-compile-tyty.h +++ b/gcc/rust/backend/rust-compile-tyty.h @@ -42,8 +42,6 @@ public: return compiler.translated; } - ~TyTyCompile () {} - void visit (TyTy::ErrorType &) override { gcc_unreachable (); } void visit (TyTy::InferType &) override { gcc_unreachable (); } @@ -53,7 +51,7 @@ public: void visit (TyTy::TupleType &type) override { if (type.num_fields () == 0) - translated = backend->void_type (); + translated = backend->unit_type (); else gcc_unreachable (); } @@ -224,7 +222,7 @@ public: void visit (TyTy::NeverType &) override { - translated = backend->void_type (); + translated = backend->unit_type (); } private: -- cgit v1.1