[cfe-commits] r81820 - in /cfe/trunk: lib/Analysis/GRExprEngine.cpp test/Analysis/misc-ps.m test/Analysis/retain-release.m
Ted Kremenek
kremenek at apple.com
Mon Sep 14 20:46:21 PDT 2009
Thanks for pointing this out. I'll need to fix it.
On Sep 14, 2009, at 7:54 PM, Eli Friedman wrote:
> On Mon, Sep 14, 2009 at 5:40 PM, Ted Kremenek <kremenek at apple.com>
> wrote:
>> --- cfe/trunk/lib/Analysis/GRExprEngine.cpp (original)
>> +++ cfe/trunk/lib/Analysis/GRExprEngine.cpp Mon Sep 14 19:40:32 2009
>> @@ -2430,10 +2430,15 @@
>> return;
>> }
>>
>> - // FIXME: Just report "Unknown" for OffsetOf.
>> - case UnaryOperator::OffsetOf:
>> - Dst.Add(Pred);
>> + case UnaryOperator::OffsetOf: {
>> + const APSInt &IV = U->EvaluateAsInt(getContext());
>> + assert(IV.getBitWidth() == getContext().getTypeSize(U-
>> >getType()));
>> + assert(U->getType()->isIntegerType());
>> + assert(IV.isSigned() == U->getType()->isSignedIntegerType());
>> + SVal X = ValMgr.makeIntVal(IV);
>> + MakeNode(Dst, U, Pred, GetState(Pred)->BindExpr(U, X));
>> return;
>> + }
>
> This looks suspicious; the result of __builtin_offsetof isn't
> necessarily an integer constant.
>
> -Eli
More information about the cfe-commits
mailing list