diff options
author | Ethan Nicholas <ethannicholas@google.com> | 2017-11-10 15:34:03 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-11-13 14:36:40 +0000 |
commit | aae47c878b83ab6d9742d92a6fa47e762f6b9204 (patch) | |
tree | fd13dbc1dc7c5dc36f8262099cf8ade55ec0cb47 /src/sksl/ir/SkSLVariableReference.h | |
parent | 2d9cb57c83553be3434c04f860d5e9fec30cb453 (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.h | 8 |
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()) { |