summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIan Romanick <[email protected]>2014-03-12 14:55:31 -0700
committerIan Romanick <[email protected]>2014-03-25 12:09:36 -0700
commitb66319b006a23875390769b6b4fde83e6e938f23 (patch)
tree4395be8d47e4dc88674953ebf80cc779cc16d059
parent14f0faacb631e8bcd3948e6711768d39f844a70a (diff)
glsl: Fold implementation of ir_dereference_variable::constant_referenced into wrapper
Signed-off-by: Ian Romanick <[email protected]> Reviewed-by: Topi Pohjolainen <[email protected]>
-rw-r--r--src/glsl/ir_constant_expression.cpp25
1 files changed, 13 insertions, 12 deletions
diff --git a/src/glsl/ir_constant_expression.cpp b/src/glsl/ir_constant_expression.cpp
index 4149a0e6e2b..c013dfd3595 100644
--- a/src/glsl/ir_constant_expression.cpp
+++ b/src/glsl/ir_constant_expression.cpp
@@ -400,6 +400,12 @@ constant_referenced(const ir_dereference *deref,
struct hash_table *variable_context,
ir_constant *&store, int &offset)
{
+ store = NULL;
+ offset = 0;
+
+ if (variable_context == NULL)
+ return false;
+
switch (deref->ir_type) {
case ir_type_dereference_array:
((ir_dereference_array *) deref)->constant_referenced(variable_context,
@@ -411,15 +417,16 @@ constant_referenced(const ir_dereference *deref,
store, offset);
break;
- case ir_type_dereference_variable:
- ((ir_dereference_variable *) deref)->constant_referenced(variable_context,
- store, offset);
+ case ir_type_dereference_variable: {
+ const ir_dereference_variable *const dv =
+ (const ir_dereference_variable *) deref;
+
+ store = (ir_constant *) hash_table_find(variable_context, dv->var);
break;
+ }
default:
assert(!"Should not get here.");
- store = NULL;
- offset = 0;
break;
}
@@ -430,13 +437,7 @@ void
ir_dereference_variable::constant_referenced(struct hash_table *variable_context,
ir_constant *&store, int &offset) const
{
- if (variable_context) {
- store = (ir_constant *)hash_table_find(variable_context, var);
- offset = 0;
- } else {
- store = NULL;
- offset = 0;
- }
+ ::constant_referenced(this, variable_context, store, offset);
}
void