[cfe-dev] Constant expression checking rewrite
Ted Kremenek
kremenek at apple.com
Sat May 17 21:44:36 PDT 2008
On May 17, 2008, at 9:30 PM, Ted Kremenek wrote:
> On May 16, 2008, at 7:26 PM, Eli Friedman wrote:
>
>> I'm not exactly sure why the DeadStores pass cares if the value is
>> constant; maybe it should just be checking for zero and other common
>> "dummy" initializations?
>
> I found that defining the scope of dummy initializations is not really
> tractable. Simply checking for a constant assignment was 99% accurate
> in pruning out dead stores resulting from defensive programming.
>
> Aside from the dead store checker, I can see other cases in the static
> analyzer (and other clients such as refactoring) where knowing whether
> or not an expression is a constant expression is very useful.
I apologize for digressing this thread, so I want to return to the
original point. I think having Sema more accurately reflect what is a
C99 constant expression is good thing (as done by your patch).
My question now is what is the harm about Expr::isConstantExpr? This
hasn't been made clear in this thread. Is the name just misleading?
Does it return true when something isn't a constant expression? I
don't have a problem removing it, but I'm trying to understand what
the problem is, especially since there are clients of it outside of
Sema. For the clients outside of Sema (including potential future
clients who want to do similar queries on expressions), I want to
understand what is fundamentally wrong or limited about
Expr::isConstantExpr as it is now.
I understand that there is an issue of cleanly implementing the
checking of constant expressions in Sema so that we can report
diagnostics (as done in your patch), and that keeping isConstantExpr
in Expr makes this a little more difficult to do cleanly. Is this the
main issue?
More information about the cfe-dev
mailing list