[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