File tree Expand file tree Collapse file tree 1 file changed +25
-4
lines changed
Expand file tree Collapse file tree 1 file changed +25
-4
lines changed Original file line number Diff line number Diff line change @@ -2606,16 +2606,37 @@ exprt verilog_typecheck_exprt::convert_unary_expr(unary_exprt expr)
26062606 expr.type () = expr.op ().operands ()[0 ].type ();
26072607 return std::move (expr);
26082608 }
2609- else
2609+ else if (expr. id () == ID_bitnot)
26102610 {
26112611 convert_expr (expr.op ());
26122612 expr.type () = expr.op ().type ();
26132613
2614- // check boolean operators
2615-
2616- if (expr.type ().id ()==ID_bool && expr.id ()==ID_bitnot)
2614+ // Boolean?
2615+ if (expr.type ().id () == ID_bool)
26172616 expr.id (ID_not);
26182617 }
2618+ else if (expr.id () == ID_posedge || expr.id () == ID_negedge)
2619+ {
2620+ convert_expr (expr.op ());
2621+ expr.type () = bool_typet{};
2622+ }
2623+ else if (expr.id () == ID_verilog_smv_eventually)
2624+ {
2625+ convert_expr (expr.op ());
2626+ make_boolean (expr.op ());
2627+ expr.type () = bool_typet{};
2628+ }
2629+ else if (
2630+ expr.id () == ID_postincrement || expr.id () == ID_preincrement ||
2631+ expr.id () == ID_postdecrement || expr.id () == ID_predecrement)
2632+ {
2633+ convert_expr (expr.op ());
2634+ expr.type () = expr.op ().type ();
2635+ }
2636+ else
2637+ {
2638+ throw errort () << " no conversion for unary expression " << expr.id ();
2639+ }
26192640
26202641 return std::move (expr);
26212642}
You can’t perform that action at this time.
0 commit comments