[cfe-commits] r172016 - in /cfe/trunk: include/clang/AST/Expr.h lib/AST/ExprConstant.cpp lib/Sema/SemaStmt.cpp test/Sema/switch-1.c

Richard Smith richard at metafoo.co.uk
Thu Jan 24 17:37:03 PST 2013


On Thu, Jan 24, 2013 at 2:19 PM, jahanian <fjahanian at apple.com> wrote:
>
> On Jan 23, 2013, at 8:28 PM, Richard Smith <richard at metafoo.co.uk> wrote:
>
>>>
>>> This patch should be feature complete.
>>
>> +  void EvaluateForOverflow(const ASTContext &Ctx,
>> +                            SmallVectorImpl<PartialDiagnosticAt> *Diag) const;
>>
>> Extra space on second line.
>>
>> +      // Sould return true in IntOverflowCheckMode, so that we check
>> for overflow
>> +      // even if some subexpressions can't be evaluated as constants.
>> +      // subexpressions can't be evaluated as constants.
>>
>> Typo 'Sould' and extra line.
>>
>> Other than that, this looks fine, assuming there's no performance hit.
>>
>
>
> Typos fixed and patch checked in r173377. I also, compiled couple of the
> largest Sema files and timed them using our internal measurement tool and did not
> noticed any noticeable change. In the course of compiling these files,  I noticed a
> crash in the expression evaluator and fixed it using this additional change (which now
> successfully builds llvm).
>
> -void Sema::CheckCompletedExpr(Expr *E, SourceLocation CheckLoc) {
> +void Sema::CheckCompletedExpr(Expr *E, SourceLocation CheckLoc,
> +                              bool IsConstexpr) {
>   CheckImplicitConversions(E, CheckLoc);
>   CheckUnsequencedOperations(E);
> +  if (!IsConstexpr && !E->isValueDependent())
> +    CheckForIntOverflow(E);
> }
>
> Note the addition of check on expression's value dependency. I was leery to
> add this check deep inside the evaluator as I am not comfortable doing that.

Thanks, checking this here is fine.



More information about the cfe-commits mailing list