Skip to content

wrong type for Bool.ite #471

@redianthus

Description

@redianthus

Hi @filipeom,

I've had a crash in smtml with the following PC coming from owi:

(let-const symbol_0 f64)
(assert (f64.le_s (f64.abs symbol_0) (f64 0x4202a05f20000000)))
(assert (f64.lt_s
          (f64 0x4066800000000000)
          (bool.ite
            (f64.lt_s symbol_0 (f64 0x0000000000000000))
              (f64.neg symbol_0)
              symbol_0)))

The crash is the following: File "src/smtml/mappings.ml", line 419, characters 15-21: Assertion failed.

I think I found the reason why it crashes: the bool.ite has type bool because the Bool.ite is written as follow in smtml:

let ite c r1 r2 = triop Ty_bool Ite c r1 r2

Which seems to be wrong, as it should have the type of r1 (or r2 as they should be equal).

WDYT?

To reproduce, you can use:

owi c testcomp/sv-benchmarks/c/float-benchs/sin_interpolated_index-1.c -vv

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions