@@ -3184,28 +3184,38 @@ void java_bytecode_convert_methodt::save_stack_entries(
31843184{
31853185 for (auto &stack_entry : stack)
31863186 {
3187+ // remove typecasts if existing
3188+ auto entry = std::ref (stack_entry);
3189+ while (entry.get ().id () == ID_typecast)
3190+ {
3191+ entry = std::ref (to_typecast_expr (stack_entry).op ());
3192+ }
3193+
31873194 // variables or static fields and symbol -> save symbols with same id
3188- if ((write_type==bytecode_write_typet::VARIABLE ||
3189- write_type==bytecode_write_typet::STATIC_FIELD) &&
3190- stack_entry.id ()==ID_symbol)
3195+ if (
3196+ (write_type == bytecode_write_typet::VARIABLE ||
3197+ write_type == bytecode_write_typet::STATIC_FIELD) &&
3198+ entry.get ().id () == ID_symbol)
31913199 {
3192- const symbol_exprt &var=to_symbol_expr (stack_entry);
3193- if (var.get_identifier ()==identifier)
3200+ if (to_symbol_expr (entry.get ()).get_identifier () == identifier)
31943201 create_stack_tmp_var (tmp_var_prefix, tmp_var_type, block, stack_entry);
31953202 }
31963203
31973204 // array reference and dereference -> save all references on the stack
3198- else if (write_type==bytecode_write_typet::ARRAY_REF &&
3199- stack_entry.id ()==ID_dereference)
3205+ else if (
3206+ write_type == bytecode_write_typet::ARRAY_REF &&
3207+ entry.get ().id () == ID_dereference)
3208+ {
32003209 create_stack_tmp_var (tmp_var_prefix, tmp_var_type, block, stack_entry);
3210+ }
32013211
32023212 // field and member access -> compare component name
3203- else if (write_type==bytecode_write_typet::FIELD &&
3204- stack_entry.id ()==ID_member)
3213+ else if (
3214+ write_type == bytecode_write_typet::FIELD &&
3215+ entry.get ().id () == ID_member)
32053216 {
3206- const irep_idt &entry_id=
3207- to_member_expr (stack_entry).get_component_name ();
3208- if (entry_id==identifier)
3217+ const irep_idt &entry_id = to_member_expr (entry).get_component_name ();
3218+ if (entry_id == identifier)
32093219 create_stack_tmp_var (tmp_var_prefix, tmp_var_type, block, stack_entry);
32103220 }
32113221 }
0 commit comments