@@ -210,13 +210,26 @@ string_insertion_builtin_functiont::string_insertion_builtin_functiont(
210210 const std::vector<exprt> &fun_args,
211211 array_poolt &array_pool)
212212{
213- PRECONDITION (fun_args.size () > 3 );
213+ PRECONDITION (fun_args.size () > 4 );
214+ const auto arg1 = expr_checked_cast<struct_exprt>(fun_args[2 ]);
215+ input1 = array_pool.find (arg1.op1 (), arg1.op0 ());
216+ const auto arg2 = expr_checked_cast<struct_exprt>(fun_args[4 ]);
217+ input2 = array_pool.find (arg2.op1 (), arg2.op0 ());
218+ result = array_pool.find (fun_args[1 ], fun_args[0 ]);
219+ args.push_back (fun_args[3 ]);
220+ args.insert (args.end (), fun_args.begin () + 5 , fun_args.end ());
221+ }
222+
223+ string_concatenation_builtin_functiont::string_concatenation_builtin_functiont (
224+ const std::vector<exprt> &fun_args,
225+ array_poolt &array_pool)
226+ {
227+ PRECONDITION (fun_args.size () == 4 );
214228 const auto arg1 = expr_checked_cast<struct_exprt>(fun_args[2 ]);
215229 input1 = array_pool.find (arg1.op1 (), arg1.op0 ());
216230 const auto arg2 = expr_checked_cast<struct_exprt>(fun_args[3 ]);
217231 input2 = array_pool.find (arg2.op1 (), arg2.op0 ());
218232 result = array_pool.find (fun_args[1 ], fun_args[0 ]);
219- args.insert (args.end (), fun_args.begin () + 4 , fun_args.end ());
220233}
221234
222235optionalt<std::vector<mp_integer>> eval_string (
0 commit comments