techmap: don't drop attributes on replaced cells.
authorwhitequark <whitequark@whitequark.org>
Mon, 29 Jun 2020 23:14:13 +0000 (23:14 +0000)
committerwhitequark <whitequark@whitequark.org>
Mon, 29 Jun 2020 23:14:13 +0000 (23:14 +0000)
This was introduced in 76c4ee4ea5cb6a3dc214f66237af22a1bedda010.

Fixes #2204.

passes/techmap/techmap.cc

index 1cee51d06a0146d790f1e948aeb858ad52495349..f98d1564ac18609422489fa8591c00828694309f 100644 (file)
@@ -328,8 +328,9 @@ struct TechmapWorker
                for (auto tpl_cell : tpl->cells())
                {
                        IdString c_name = tpl_cell->name;
+                       bool techmap_replace_cell = (c_name == ID::_TECHMAP_REPLACE_);
 
-                       if (c_name == ID::_TECHMAP_REPLACE_)
+                       if (techmap_replace_cell)
                                c_name = orig_cell_name;
                        else if (tpl_cell->name.begins_with("\\_TECHMAP_REPLACE_."))
                                c_name = stringf("%s%s", orig_cell_name.c_str(), c_name.c_str() + strlen("\\_TECHMAP_REPLACE_"));
@@ -384,7 +385,7 @@ struct TechmapWorker
                        if (c->attributes.count(ID::src))
                                c->add_strpool_attribute(ID::src, extra_src_attrs);
 
-                       if (c_name == ID::_TECHMAP_REPLACE_)
+                       if (techmap_replace_cell)
                                for (auto attr : cell->attributes)
                                        if (!c->attributes.count(attr.first))
                                                c->attributes[attr.first] = attr.second;