Fixed instruction_info initializer.

PiperOrigin-RevId: 698176169
Change-Id: Iee18212f1dab06bda31ba89a39f682e2724926d6
diff --git a/mpact/sim/decoder/instruction_set_visitor.cc b/mpact/sim/decoder/instruction_set_visitor.cc
index 14e9bdf..e9f7f37 100644
--- a/mpact/sim/decoder/instruction_set_visitor.cc
+++ b/mpact/sim/decoder/instruction_set_visitor.cc
@@ -2234,13 +2234,14 @@
                   "using ResourceSetter = void(*)(Instruction *, ",
                   encoding_base_name,
                   "*, SlotEnum, int);\n"
+                  "using SemFuncSetter = std::vector<SemFunc>;\n"
                   "using AttributeSetter = void(*)(Instruction *);\n"
                   "struct InstructionInfo {\n"
                   "  OperandSetter operand_setter;\n"
                   "  DisassemblySetter disassembly_setter;\n"
                   "  ResourceSetter resource_setter;\n"
                   "  AttributeSetter attribute_setter;\n"
-                  "  std::vector<SemFunc> semfunc;\n"
+                  "  SemFuncSetter semfunc;\n"
                   "  int instruction_size;\n"
                   "};\n"
                   "\n");
@@ -2262,7 +2263,7 @@
   // Include files.
   absl::StrAppend(&output, "#include \"", hdr_file_name, "\"\n");
   absl::StrAppend(&output,
-                  "\n"
+                  "\n#include <array>\n\n"
                   "#include \"absl/strings/str_format.h\"\n\n");
 
   for (auto &include_file : include_files_) {
diff --git a/mpact/sim/decoder/slot.cc b/mpact/sim/decoder/slot.cc
index de74c0b..d8ca513 100644
--- a/mpact/sim/decoder/slot.cc
+++ b/mpact/sim/decoder/slot.cc
@@ -861,13 +861,13 @@
                       absl::StrCat(pascal_name(), "SlotSetOperandsNull"),
                       encoding_type, default_instruction_->opcode()));
   absl::StrAppend(
-      &output, "    {{OperandSetter{", pascal_name(),
+      &output, "    {OperandSetter{", pascal_name(),
       "SlotSetOperandsNull},\n"
       "    ",
       GenerateDisassemblySetter(default_instruction_), ",\n", "    ",
       GenerateResourceSetter(default_instruction_, encoding_type), ",\n",
-      "    ", GenerateAttributeSetter(default_instruction_), ",\n", "    {",
-      default_instruction_->semfunc_code_string(), "}, ",
+      "    ", GenerateAttributeSetter(default_instruction_), ",\n",
+      "    SemFuncSetter{", default_instruction_->semfunc_code_string(), "}, ",
       default_instruction_->opcode()->instruction_size(), "},\n");
   for (auto const &[unused, inst_ptr] : instruction_map_) {
     auto *instruction = inst_ptr;
@@ -910,10 +910,9 @@
                     "    ", GenerateDisassemblySetter(instruction), ",\n",
                     "    ", GenerateResourceSetter(instruction, encoding_type),
                     ",\n", "    ", GenerateAttributeSetter(instruction), ",\n",
-                    "    {", code_str, "}, ",
+                    "    SemFuncSetter{", code_str, "}, ",
                     instruction->opcode()->instruction_size(), "},\n");
   }
-  absl::StrAppend(&output, "  }");
   return output;
 }
 
@@ -957,8 +956,8 @@
       &output, class_name, "::", class_name,
       "(ArchState *arch_state) :\n"
       "  arch_state_(arch_state),\n",
-      "  instruction_info_(\n", ListFuncGetterInitializations(encoding_type),
-      ") {}\n",
+      "  instruction_info_{{\n", ListFuncGetterInitializations(encoding_type),
+      "}} {}\n",
       "\n"
       "Instruction *",
       class_name, "::Decode(uint64_t address, ", encoding_type,