aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/sksl/ir/SkSLVariableReference.h
diff options
context:
space:
mode:
authorGravatar Ethan Nicholas <ethannicholas@google.com>2017-11-10 15:34:03 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-11-13 14:36:40 +0000
commitaae47c878b83ab6d9742d92a6fa47e762f6b9204 (patch)
treefd13dbc1dc7c5dc36f8262099cf8ade55ec0cb47 /src/sksl/ir/SkSLVariableReference.h
parent2d9cb57c83553be3434c04f860d5e9fec30cb453 (diff)
sksl enum support
Bug: skia: Change-Id: I4d505b31cf8b59de12bcdbca410aafc085977ba9 Reviewed-on: https://skia-review.googlesource.com/68621 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Diffstat (limited to 'src/sksl/ir/SkSLVariableReference.h')
-rw-r--r--src/sksl/ir/SkSLVariableReference.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/sksl/ir/SkSLVariableReference.h b/src/sksl/ir/SkSLVariableReference.h
index 54917b0431..ad54d43515 100644
--- a/src/sksl/ir/SkSLVariableReference.h
+++ b/src/sksl/ir/SkSLVariableReference.h
@@ -74,6 +74,10 @@ struct VariableReference : public Expression {
return false;
}
+ bool isConstant() const override {
+ return 0 != (fVariable.fModifiers.fFlags & Modifiers::kConst_Flag);
+ }
+
String description() const override {
return fVariable.fName;
}
@@ -120,6 +124,10 @@ struct VariableReference : public Expression {
if (fRefKind != kRead_RefKind) {
return nullptr;
}
+ if ((fVariable.fModifiers.fFlags & Modifiers::kConst_Flag) && fVariable.fInitialValue &&
+ fVariable.fInitialValue->isConstant()) {
+ return copy_constant(irGenerator, fVariable.fInitialValue);
+ }
auto exprIter = definitions.find(&fVariable);
if (exprIter != definitions.end() && exprIter->second &&
(*exprIter->second)->isConstant()) {