Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions xls/ir/function_base.cc
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,10 @@ absl::Status FunctionBase::RemoveNode(Node* node) {
for (ChangeListener* listener : change_listeners_) {
listener->NodeDeleted(node);
}
// Clear the name.
if (node->HasAssignedName()) {
XLS_RETURN_IF_ERROR(node_name_uniquer_.ReleaseIdentifier(node->GetName()));
}
auto node_it = node_iterators_.find(node);
XLS_RET_CHECK(node_it != node_iterators_.end());
nodes_.erase(node_it->second);
Expand Down
16 changes: 7 additions & 9 deletions xls/passes/proc_state_tuple_flattening_pass_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -193,16 +193,14 @@ TEST_P(ProcStateFlatteningPassTest, EmptyTupleAndBitsState) {

EXPECT_EQ(proc->GetStateElementCount(), 2);

// The name uniquer thinks the names "y" and "q" are already taken (as they
// were the names of previously deleted nodes). So the new state params get
// suffixes.
// TODO(meheff): 2022/4/7 Figure out how to preserve the names.
EXPECT_EQ(proc->GetStateRead(int64_t{0})->GetName(), "y__1");
// The name uniquer is told the names "y" and "q" are already released. So the
// new state params get the same name.
EXPECT_EQ(proc->GetStateRead(int64_t{0})->GetName(), "y");
EXPECT_EQ(proc->GetStateElement(0)->initial_value(), Value(UBits(0, 32)));
EXPECT_THAT(proc->next_values(proc->GetStateRead(int64_t{0})),
ElementsAre(m::Next(m::StateRead("y"), m::StateRead("y"))));

EXPECT_EQ(proc->GetStateRead(1)->GetName(), "q__1");
EXPECT_EQ(proc->GetStateRead(1)->GetName(), "q");
EXPECT_EQ(proc->GetStateElement(1)->initial_value(), Value(UBits(0, 64)));
EXPECT_THAT(
proc->next_values(proc->GetStateRead(1)),
Expand All @@ -222,7 +220,7 @@ TEST_P(ProcStateFlatteningPassTest, TrivialTupleState) {

EXPECT_EQ(proc->GetStateElementCount(), 1);

EXPECT_EQ(proc->GetStateRead(int64_t{0})->GetName(), "x__1");
EXPECT_EQ(proc->GetStateRead(int64_t{0})->GetName(), "x");
EXPECT_EQ(proc->GetStateElement(0)->initial_value(), Value(UBits(42, 32)));
EXPECT_THAT(
proc->next_values(proc->GetStateRead(int64_t{0})),
Expand All @@ -242,7 +240,7 @@ TEST_P(ProcStateFlatteningPassTest, TrivialTupleStateWithNextExpression) {

EXPECT_EQ(proc->GetStateElementCount(), 1);

EXPECT_EQ(proc->GetStateRead(int64_t{0})->GetName(), "x__1");
EXPECT_EQ(proc->GetStateRead(int64_t{0})->GetName(), "x");
EXPECT_EQ(proc->GetStateElement(0)->initial_value(), Value(UBits(42, 32)));
EXPECT_THAT(proc->next_values(proc->GetStateRead(int64_t{0})),
UnorderedElementsAre(
Expand Down Expand Up @@ -287,7 +285,7 @@ TEST_P(ProcStateFlatteningPassTest, ComplicatedState) {
proc->next_values(proc->GetStateRead(2)),
UnorderedElementsAre(m::Next(m::StateRead("a_2"), m::StateRead("c_1"))));

EXPECT_EQ(proc->GetStateRead(3)->GetName(), "b__1");
EXPECT_EQ(proc->GetStateRead(3)->GetName(), "b");
EXPECT_THAT(
proc->next_values(proc->GetStateRead(3)),
UnorderedElementsAre(m::Next(m::StateRead("b"), m::StateRead("a_0"))));
Expand Down