summaryrefslogtreecommitdiffstats
path: root/src/glsl/glsl_symbol_table.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/glsl/glsl_symbol_table.cpp')
-rw-r--r--src/glsl/glsl_symbol_table.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/glsl/glsl_symbol_table.cpp b/src/glsl/glsl_symbol_table.cpp
index 76c440c3420..11e16713351 100644
--- a/src/glsl/glsl_symbol_table.cpp
+++ b/src/glsl/glsl_symbol_table.cpp
@@ -147,10 +147,15 @@ const glsl_type *glsl_symbol_table::get_type(const char *name)
return entry != NULL ? entry->t : NULL;
}
-ir_function *glsl_symbol_table::get_function(const char *name)
+ir_function *glsl_symbol_table::get_function(const char *name,
+ bool return_constructors)
{
symbol_table_entry *entry = get_entry(name);
- return entry != NULL ? entry->f : NULL;
+ // If there's a type, the function is a constructor; caller may not want it.
+ if (entry != NULL && (return_constructors || entry->t == NULL))
+ return entry->f;
+
+ return NULL;
}
symbol_table_entry *glsl_symbol_table::get_entry(const char *name)