diffblue/cbmc

Support for inlined `struct` type is not yet implemented in incremental smt2 decision procedure

esteffin opened this issue · 0 comments

The incremental smt2 decision procedure struct encoding function expects the struct_exprt type to be a struct_type_tag and not an inlined struct_typet.

This is causes the struct_typet to not be encoded (while the outer struct_exprt is encoded) and when passed to the convert_type_to_smt_sort function it causes an invariant violation.

Note that the inline struct is added by overflow operations instrumentation.

The tests affected by this issue are:

  • cbmc/gcc_builtin_add_overflow/test.desc
  • cbmc/gcc_builtin_mul_overflow/test.desc
  • cbmc/gcc_builtin_sub_overflow/test.desc
  • cbmc-primitives/exists_memory_checks/invalid_index_range.desc
  • cbmc-primitives/exists_memory_checks/negated_exists.desc
  • cbmc-primitives/exists_memory_checks/smt_missing_range_check.desc
  • cbmc-primitives/exists_memory_checks/valid_index_range.desc