remove vcgen for frem: LLVM's semantics doesn't match Z3's
MODIFY
ir/instr.cpp
ir/instr.cpp
@@ -298,7 +298,7 @@ StateValue BinOp::toSMT(State &s) const {
break;
case FRem:
- val = a.frem(b);
+ // TODO; Z3 has no support for LLVM's frem which is actually an fmod
break;
}

MODIFY
smt/expr.cpp
smt/expr.cpp
@@ -731,11 +731,6 @@ expr expr::fdiv(const expr &rhs) const {
return Z3_mk_fpa_div(ctx(), rm, ast(), rhs());
}
-expr expr::frem(const expr &rhs) const {
- C(rhs);
- return Z3_mk_fpa_rem(ctx(), ast(), rhs());
-}
-
expr expr::operator&(const expr &rhs) const {
if (eq(rhs))
return *this;

MODIFY
smt/expr.h
smt/expr.h
@@ -158,7 +158,6 @@ public:
expr fsub(const expr &rhs) const;
expr fmul(const expr &rhs) const;
expr fdiv(const expr &rhs) const;
- expr frem(const expr &rhs) const;
expr operator&(const expr &rhs) const;
expr operator|(const expr &rhs) const;

remove vcgen for frem: LLVM's semantics doesn't match Z3's