[PATCH] D36876: [IRGen] Evaluate constant static variables referenced through member expressions
Richard Smith - zygoloid via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Aug 18 10:45:01 PDT 2017
rsmith added inline comments.
================
Comment at: lib/CodeGen/CGExprComplex.cpp:156
+ auto Constant = tryEmitDeclRefOrMemberExprAsConstant(
+ ME, ME->getMemberDecl(), /*AllowSideEffects=*/true);
+ if (Constant) {
----------------
If we can (correctly) allow side-effects in the initializer here, why can we not also do so when emitting a `DeclRefExpr`?
================
Comment at: lib/CodeGen/CGExprScalar.cpp:1314-1321
+ } else {
+ // Fields can evaluate to constants if their base can be evaluated.
+ llvm::APSInt Value;
+ if (E->EvaluateAsInt(Value, CGF.getContext(), Expr::SE_AllowSideEffects))
+ V = Builder.getInt(Value);
+ else
+ V = nullptr;
----------------
Can we remove this and just use `tryEmit...` unconditionally?
Repository:
rL LLVM
https://reviews.llvm.org/D36876
More information about the cfe-commits
mailing list