[cfe-dev] signess error when building cfg
Jean-Daniel Dupas
devlists at shadowlab.org
Thu Jul 3 14:13:36 PDT 2008
Hello,
I just encounter an assert when performing file analysis (cfg-
building) in clang::Expr::isIntegerConstantExpr()
When I perform an operation between to variable with different sign,
APSInt raise an error (assert).
And so, something like 'clang -cfg-dump' on this code will crash:
#include <stdint.h>
void testBinaryOp() {
void *bytes = 0;
/* Alignement */
bytes = (intptr_t)bytes + 2;
bytes = (intptr_t)bytes % 2;
bytes = (intptr_t)bytes / 2;
}
Is it a known issue, or is it worth filling a bug report ?
Stack trace:
#4 0x91ca9063 in __assert_rtn ()
#5 0x00028789 in llvm::APSInt::operator+= (this=0xbfffe5b0,
RHS=@0xbfffe454) at APSInt.h:159
#6 0x00025fd9 in clang::Expr::isIntegerConstantExpr (this=0xc0ae30,
Result=@0xbfffe5b0, Ctx=@0xbfffef80, Loc=0x0, isEvaluated=true) at /
Users/Projects/Tools/llvm/tools/clang/lib/AST/Expr.cpp:876
#7 0x00027036 in clang::Expr::isNullPointerConstant (this=0xc0ae30,
Ctx=@0xbfffef80) at /Users/Projects/Tools/llvm/tools/clang/lib/AST/
Expr.cpp:1058
#8 0x00092871 in clang::Sema::CheckSingleAssignmentConstraints
(this=0xbffff140, lhsType={ThePtr = 12595040}, rExpr=@0xbfffe708) at /
Users/Projects/Tools/llvm/tools/clang/lib/Sema/SemaExpr.cpp:1431
#9 0x0009a0e9 in clang::Sema::CheckAssignmentOperands
(this=0xbffff140, lex=0xc0ad90, rex=@0xbfffe708, loc={ID = 131294},
compoundType={ThePtr = 0}) at /Users/Projects/Tools/llvm/tools/clang/
lib/Sema/SemaExpr.cpp:1805
#10 0x00092af4 in clang::Sema::ActOnBinOp (this=0xbffff140, TokLoc={ID
= 131294}, Kind=clang::tok::equal, LHS=0xc0ad90, RHS=0xc0ae30) at /
Users/Projects/Tools/llvm/tools/clang/lib/Sema/SemaExpr.cpp:2052
#11 0x0005cfe0 in clang::Parser::ParseRHSOfBinaryExpression
(this=0xbffff2b0, LHS={Val = 0xc0ad90, isInvalid = false}, MinPrec=1)
at /Users/Projects/Tools/llvm/tools/clang/lib/Parse/ParseExpr.cpp:384
#12 0x0005e482 in clang::Parser::ParseExpressionWithLeadingIdentifier
(this=0xbffff2b0, IdTok=@0xbfffea04) at /Users/Projects/Tools/llvm/
tools/clang/lib/Parse/ParseExpr.cpp:259
#13 0x000548ed in clang::Parser::ParseIdentifierStatement
(this=0xbffff2b0, OnlyStatement=false) at /Users/Projects/Tools/llvm/
tools/clang/lib/Parse/ParseStmt.cpp:267
#14 0x000521da in clang::Parser::ParseStatementOrDeclaration
(this=0xbffff2b0, OnlyStatement=false) at /Users/Projects/Tools/llvm/
tools/clang/lib/Parse/ParseStmt.cpp:86
#15 0x00051a7e in clang::Parser::ParseCompoundStatementBody
(this=0xbffff2b0, isStmtExpr=false) at /Users/Projects/Tools/llvm/
tools/clang/lib/Parse/ParseStmt.cpp:425
#16 0x00051e68 in clang::Parser::ParseFunctionStatementBody
(this=0xbffff2b0, Decl=0xc07160, L={ID = 131246}, R={ID = 131246}) at /
Users/Projects/Tools/llvm/tools/clang/lib/Parse/ParseStmt.cpp:1149
#17 0x0001e09c in clang::Parser::ParseFunctionDefinition
(this=0xbffff2b0, D=@0xbfffed70) at /Users/Projects/Tools/llvm/tools/
clang/lib/Parse/Parser.cpp:507
#18 0x0001e5f5 in clang::Parser::ParseDeclarationOrFunctionDefinition
(this=0xbffff2b0) at /Users/Projects/Tools/llvm/tools/clang/lib/Parse/
Parser.cpp:442
#19 0x0001e74f in clang::Parser::ParseExternalDeclaration
(this=0xbffff2b0) at /Users/Projects/Tools/llvm/tools/clang/lib/Parse/
Parser.cpp:353
#20 0x0001e979 in clang::Parser::ParseTopLevelDecl (this=0xbffff2b0,
Result=@0xbffff384) at /Users/Projects/Tools/llvm/tools/clang/lib/
Parse/Parser.cpp:269
#21 0x000ab191 in clang::ParseAST (PP=@0xc011d0, Consumer=0xc02120,
PrintStats=false) at /Users/Projects/Tools/llvm/tools/clang/lib/Sema/
ParseAST.cpp:56
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2427 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20080703/0cb28ed8/attachment.bin>
More information about the cfe-dev
mailing list