Skip to content

Commit 9248e11

Browse files
committed
Verilog: use zero_extend_exprt
This replaces a custom encoding via typecast_exprt used in the Verilog front-end by zero_extend_exprt.
1 parent bd5b05e commit 9248e11

File tree

2 files changed

+17
-5
lines changed

2 files changed

+17
-5
lines changed

src/verilog/expr2verilog.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2007,6 +2007,9 @@ expr2verilogt::resultt expr2verilogt::convert_rec(const exprt &src)
20072007
return convert_function(src.id_string(), src);
20082008
}
20092009

2010+
else if(src.id() == ID_zero_extend)
2011+
return convert_rec(to_zero_extend_expr(src).op());
2012+
20102013
// no VERILOG language expression for internal representation
20112014
return convert_norep(src);
20122015
}

src/verilog/verilog_typecheck_expr.cpp

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2438,7 +2438,7 @@ void verilog_typecheck_exprt::tc_binary_expr(
24382438
}
24392439

24402440
/*******************************************************************\
2441-
2441+
24422442
Function: zero_extend
24432443
24442444
Inputs:
@@ -2451,10 +2451,17 @@ Function: zero_extend
24512451

24522452
static exprt zero_extend(const exprt &expr, const typet &type)
24532453
{
2454-
auto old_width = expr.type().id() == ID_bool ? 1
2455-
: expr.type().id() == ID_integer
2456-
? 32
2457-
: to_bitvector_type(expr.type()).get_width();
2454+
if(expr.type().id() == ID_bool)
2455+
{
2456+
return zero_extend(typecast_exprt{expr, unsignedbv_typet{1}}, type);
2457+
}
2458+
else if(expr.type().id() == ID_integer)
2459+
{
2460+
return zero_extend(typecast_exprt{expr, unsignedbv_typet{32}}, type);
2461+
}
2462+
2463+
#if 0
2464+
auto old_width = to_bitvector_type(expr.type()).get_width();
24582465

24592466
// first make unsigned
24602467
typet tmp_type;
@@ -2468,6 +2475,8 @@ static exprt zero_extend(const exprt &expr, const typet &type)
24682475

24692476
return typecast_exprt::conditional_cast(
24702477
typecast_exprt::conditional_cast(expr, tmp_type), type);
2478+
#endif
2479+
return zero_extend_exprt{expr, type};
24712480
}
24722481

24732482
/*******************************************************************\

0 commit comments

Comments
 (0)