Hi All,
I need a support to find the below *IL null pointer return for negative
integer numbers.
Checker code:
const Expr *e = vDecl->getInit();
auto *IL = dyn_cast(e);
if(IL !=NULL)
{
double val = IL->getValue().signedRoundToDouble();
cout << “val:” val;
}
test function:
main()
{
int val = 100; (int val = -100;)
printf(“%d”, val);
}
if the local variable is positive ex: int var 100; then cout prints the
right value “100”.
But if the local variable is negative ex: int var -100; then IL becomes
NULL and cout is not executed.
Please help me root cause this issue.
Thanks,
Devendran.
The -100 is not the integer literal for 100 less than 0. It is the application of the unary operator ‘-’ to the integer literal 100.
If you want to get the value, do the overload of isConstantExpr on Expr they takes a reference to APValue.
Hi All,
I need a support to find the below *IL null pointer return for negative
integer numbers.
Checker code:
const Expr *e = vDecl->getInit();
auto *IL = dyn_cast(e);
if(IL !=NULL)
{
double val = IL->getValue().signedRoundToDouble();
cout << “val:” val;
}
test function:
main()
{
int val = 100; (int val = -100;)
printf(“%d”, val);
}
if the local variable is positive ex: int var 100; then cout prints the
right value “100”.
But if the local variable is negative ex: int var -100; then IL becomes
NULL and cout is not executed.
Please help me root cause this issue.
Thanks,
Devendran.