From 481cb635fe58d022c1aac9f58b2266ed7280e88d Mon Sep 17 00:00:00 2001 From: Philip Herron Date: Fri, 1 Aug 2025 11:52:16 +0100 Subject: [PATCH] gccrs: Ensure we track the const generic substitution on the param mappings gcc/rust/ChangeLog: * typecheck/rust-tyty-subst.cc: track the const generic * typecheck/rust-tyty.cc (ConstType::is_equal): finish the is_equal Signed-off-by: Philip Herron --- gcc/rust/typecheck/rust-tyty-subst.cc | 7 +++++-- gcc/rust/typecheck/rust-tyty.cc | 10 ++++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/gcc/rust/typecheck/rust-tyty-subst.cc b/gcc/rust/typecheck/rust-tyty-subst.cc index 45c8cd638eb..64791097b18 100644 --- a/gcc/rust/typecheck/rust-tyty-subst.cc +++ b/gcc/rust/typecheck/rust-tyty-subst.cc @@ -163,8 +163,11 @@ SubstitutionParamMapping::fill_param_ty ( if (type.get_kind () == TypeKind::PARAM) { - // delete param; - param = static_cast (type.clone ()); + param = static_cast (type.clone ()); + } + else if (type.get_kind () == TyTy::TypeKind::CONST) + { + param = static_cast (type.clone ()); } else if (param->get_kind () == TypeKind::PARAM) { diff --git a/gcc/rust/typecheck/rust-tyty.cc b/gcc/rust/typecheck/rust-tyty.cc index c5488fca500..d25f524a6cc 100644 --- a/gcc/rust/typecheck/rust-tyty.cc +++ b/gcc/rust/typecheck/rust-tyty.cc @@ -37,6 +37,7 @@ #include "options.h" #include "rust-system.h" #include "tree.h" +#include "fold-const.h" #include namespace Rust { @@ -3712,9 +3713,14 @@ ConstType::is_equal (const BaseType &other) const return false; } - // TODO + const ConstType &rhs = static_cast (other); + if (!get_ty ()->is_equal (*rhs.get_ty ())) + return false; - return false; + tree lv = get_value (); + tree rv = rhs.get_value (); + + return operand_equal_p (lv, rv, 0); } ConstType * -- 2.47.2