================
Comment at: lib/AST/Expr.cpp:2953
@@ +2952,3 @@
+ const Decl *FD = cast<CallExpr>(this)->getCalleeDecl();
+ bool IsConst = FD && FD->hasAttr<ConstAttr>();
+ if (IsConst || !IncludePossibleEffects)
----------------
hfinkel wrote:
> You're checking for ConstAttr here, which is fine, but I think that we can do
> more:
>
> This is allowed:
> static int i;
> void foo() {
> __builtin_assume(i > 0);
> }
>
> and so we can also check for PureAttr. And what about constexpr functions?
>
I don't think we can do anything interesting for `constexpr` functions, because
they're not pure in general. One thing you could do is to try to evaluate the
expression; if it's a constant expression, then it has no side-effects.
http://reviews.llvm.org/D8548
EMAIL PREFERENCES
http://reviews.llvm.org/settings/panel/emailpreferences/
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits