[cfe-dev] "*IL = dyn_cast<IntegerLiteral>(e); " fails for negative integers

Devendran Mani via cfe-dev cfe-dev at lists.llvm.org
Thu Oct 31 17:51:34 PDT 2019


 Hi All,

I need a support to find the below *IL  null pointer return for negative
integer numbers.

const Expr *e = vDecl->getInit();
auto *IL = dyn_cast<IntegerLiteral>(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 the cout is skipped.

Please help me root cause this issue.

Thanks,
Devendran.



--
Sent from: http://clang-developers.42468.n3.nabble.com/

  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20191101/4fd7b79b/attachment.html>


More information about the cfe-dev mailing list