File tree 1 file changed +13
-9
lines changed 1 file changed +13
-9
lines changed Original file line number Diff line number Diff line change @@ -345,24 +345,28 @@ void interpretert::evaluate(
345
345
}
346
346
else if (expr.type ().id () == ID_pointer)
347
347
{
348
- mp_integer i=0 ;
349
348
if (expr.has_operands () && expr.op0 ().id ()==ID_address_of)
350
349
{
351
350
evaluate (expr.op0 (), dest);
352
351
return ;
353
352
}
354
- else if (expr.has_operands () && ! to_integer (expr. op0 (), i) )
353
+ else if (expr.has_operands ())
355
354
{
356
- dest.push_back (i);
357
- return ;
355
+ if (const auto i = numeric_cast<mp_integer>(expr.op0 ()))
356
+ {
357
+ dest.push_back (*i);
358
+ return ;
359
+ }
358
360
}
359
361
// check if expression is constant null pointer without operands
360
- else if (
361
- !expr.has_operands () && !to_integer (to_constant_expr (expr), i) &&
362
- i.is_zero ())
362
+ else if (!expr.has_operands ())
363
363
{
364
- dest.push_back (i);
365
- return ;
364
+ const auto i = numeric_cast<mp_integer>(expr);
365
+ if (i && i->is_zero ())
366
+ {
367
+ dest.push_back (*i);
368
+ return ;
369
+ }
366
370
}
367
371
}
368
372
else if (expr.type ().id ()==ID_floatbv)
You can’t perform that action at this time.
0 commit comments