64 const auto *nameAnnot = keyElem->getAnnotation(IR::Annotation::nameAnnotation);
65 CHECK_NULL(nameAnnot);
66 cstring keyName = nameAnnot->getName();
68 auto isReplaced =
false;
70 const auto *foundValid = keyName.find(
".$valid");
71 if (foundValid !=
nullptr) {
73 keyName = keyName.exceptLast(1);
79 std::regex hdrStackRegex(R
"(\[([0-9]+)\])");
80 auto indexName = std::regex_replace(keyName.c_str(), hdrStackRegex,
"$$$1");
81 if (indexName != keyName.c_str()) {
82 keyName = cstring::to_cstring(indexName);
87 ::warning(
"Replacing invalid key %1% with %2% for key %3%. ", keyName, keyName,
90 keyElem->addOrReplaceAnnotation(IR::Annotation::nameAnnotation,
91 new IR::StringLiteral(keyName));