introduce internal "mask" expression node to avoid mixed-type overloading of "/"

This commit is contained in:
Vern Paxson 2023-09-26 14:39:26 -07:00
parent b53a025b1e
commit 434a7e059d
6 changed files with 55 additions and 13 deletions

View file

@ -633,7 +633,10 @@ expr:
| expr '/' expr
{
set_location(@1, @3);
$$ = new DivideExpr({AdoptRef{}, $1}, {AdoptRef{}, $3});
if ( $1->GetType()->Tag() == TYPE_ADDR )
$$ = new MaskExpr({AdoptRef{}, $1}, {AdoptRef{}, $3});
else
$$ = new DivideExpr({AdoptRef{}, $1}, {AdoptRef{}, $3});
}
| expr '%' expr