Mesa (master): glsl: Fold implementation of ir_dereference_record:: constant_referenced into wrapper
Ian Romanick
idr at kemper.freedesktop.org
Tue Mar 25 19:09:48 UTC 2014
Module: Mesa
Branch: master
Commit: 35bf94f901fcbd47cf0e631d370b130b31cd28ee
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=35bf94f901fcbd47cf0e631d370b130b31cd28ee
Author: Ian Romanick <ian.d.romanick at intel.com>
Date: Wed Mar 12 15:01:12 2014 -0700
glsl: Fold implementation of ir_dereference_record::constant_referenced into wrapper
Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen at intel.com>
---
src/glsl/ir_constant_expression.cpp | 38 +++++++++++++++++++----------------
1 file changed, 21 insertions(+), 17 deletions(-)
diff --git a/src/glsl/ir_constant_expression.cpp b/src/glsl/ir_constant_expression.cpp
index c013dfd..336ce17 100644
--- a/src/glsl/ir_constant_expression.cpp
+++ b/src/glsl/ir_constant_expression.cpp
@@ -412,10 +412,27 @@ constant_referenced(const ir_dereference *deref,
store, offset);
break;
- case ir_type_dereference_record:
- ((ir_dereference_record *) deref)->constant_referenced(variable_context,
- store, offset);
+ case ir_type_dereference_record: {
+ const ir_dereference_record *const dr =
+ (const ir_dereference_record *) deref;
+
+ const ir_dereference *const deref = dr->record->as_dereference();
+ if (!deref)
+ break;
+
+ ir_constant *substore;
+ int suboffset;
+
+ if (!constant_referenced(deref, variable_context, substore, suboffset))
+ break;
+
+ /* Since we're dropping it on the floor...
+ */
+ assert(suboffset == 0);
+
+ store = substore->get_record_field(dr->field);
break;
+ }
case ir_type_dereference_variable: {
const ir_dereference_variable *const dv =
@@ -493,20 +510,7 @@ void
ir_dereference_record::constant_referenced(struct hash_table *variable_context,
ir_constant *&store, int &offset) const
{
- ir_constant *substore;
- int suboffset;
- const ir_dereference *deref = record->as_dereference();
- if (!deref) {
- store = 0;
- offset = 0;
- return;
- }
-
- if (!::constant_referenced(deref, variable_context, substore, suboffset))
- return;
-
- store = substore->get_record_field(field);
- offset = 0;
+ ::constant_referenced(this, variable_context, store, offset);
}
/*@}*/
More information about the mesa-commit
mailing list