From 9c96e61e9b0dac30d2e94a189a63809681cc0ec4 Mon Sep 17 00:00:00 2001 From: Robert O'Callahan Date: Fri, 29 Aug 2025 04:42:52 +0000 Subject: [PATCH] Const::decode_string() doesn't need to call bitvectorize --- kernel/rtlil.cc | 1 - tests/unit/kernel/rtlilTest.cc | 26 ++++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/kernel/rtlil.cc b/kernel/rtlil.cc index 03da35ba1..1abb58fc5 100644 --- a/kernel/rtlil.cc +++ b/kernel/rtlil.cc @@ -542,7 +542,6 @@ std::string RTLIL::Const::decode_string() const if (auto str = get_if_str()) return *str; - bitvectorize_internal(); bitvectype& bv = get_bits(); const int n = GetSize(bv); const int n_over_8 = n / 8; diff --git a/tests/unit/kernel/rtlilTest.cc b/tests/unit/kernel/rtlilTest.cc index 366d022de..5f8c0dd06 100644 --- a/tests/unit/kernel/rtlilTest.cc +++ b/tests/unit/kernel/rtlilTest.cc @@ -131,6 +131,32 @@ namespace RTLIL { EXPECT_EQ(c.as_string(), "00000010"); EXPECT_TRUE(c.is_str()); } + + { + Const c(" "); + EXPECT_TRUE(c.is_str()); + EXPECT_EQ(c.decode_string(), " "); + EXPECT_TRUE(c.is_str()); + } + + { + Const c(" "); + EXPECT_TRUE(c.is_str()); + EXPECT_EQ(c.decode_string(), " "); + EXPECT_TRUE(c.is_str()); + } + + { + std::vector v = {S0, S0, S0, S0, S0, S1, S0, S0}; + Const c(v); + EXPECT_EQ(c.decode_string(), " "); + } + + { + std::vector v = {S0, S0, S0, S0, S0, S1, S0, Sx}; + Const c(v); + EXPECT_EQ(c.decode_string(), " "); + } } TEST_F(KernelRtlilTest, ConstConstIteratorWorks) {