[cfe-dev] signess error when building cfg

Chris Lattner clattner at apple.com
Thu Jul 3 20:07:24 PDT 2008


On Jul 3, 2008, at 6:43 PM, Eli Friedman wrote:
>> 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
>
> Mmm, if I'm not mistaken, this looks like a known issue with the hack
> allowing pointers in integer constant expressions; I was planning to
> fix it sooner, but the right fix grew a bit bigger than I expected it
> to, and I never got around to coming up with a quick hack.
> (Specifically, the complete fix involves the new constant expression
> evaluator work.)

Yes, it is.  We really need to fix this.  I poked at this briefly, and  
the basic problem is that isIntegerConstantExpr returns true for casts  
from pointer but doesn't fill in Result.  We really should only return  
true (in the GCC hack mode) if we are able to fold the pointer  
expression.

-Chris



More information about the cfe-dev mailing list