glsl: Make the symbol table's add_function just use the function's name.
This commit is contained in:
@@ -2495,7 +2495,7 @@ ast_function::hir(exec_list *instructions,
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
f = new(ctx) ir_function(name);
|
f = new(ctx) ir_function(name);
|
||||||
if (!state->symbols->add_function(f->name, f)) {
|
if (!state->symbols->add_function(f)) {
|
||||||
/* This function name shadows a non-function use of the same name. */
|
/* This function name shadows a non-function use of the same name. */
|
||||||
YYLTYPE loc = this->get_location();
|
YYLTYPE loc = this->get_location();
|
||||||
|
|
||||||
|
@@ -121,18 +121,18 @@ bool glsl_symbol_table::add_type(const char *name, const glsl_type *t)
|
|||||||
return _mesa_symbol_table_add_symbol(table, -1, name, entry) == 0;
|
return _mesa_symbol_table_add_symbol(table, -1, name, entry) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool glsl_symbol_table::add_function(const char *name, ir_function *f)
|
bool glsl_symbol_table::add_function(ir_function *f)
|
||||||
{
|
{
|
||||||
if (this->language_version == 110 && name_declared_this_scope(name)) {
|
if (this->language_version == 110 && name_declared_this_scope(f->name)) {
|
||||||
/* In 1.10, functions and variables have separate namespaces. */
|
/* In 1.10, functions and variables have separate namespaces. */
|
||||||
symbol_table_entry *existing = get_entry(name);
|
symbol_table_entry *existing = get_entry(f->name);
|
||||||
if ((existing->f == NULL) && (existing->t == NULL)) {
|
if ((existing->f == NULL) && (existing->t == NULL)) {
|
||||||
existing->f = f;
|
existing->f = f;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
symbol_table_entry *entry = new(mem_ctx) symbol_table_entry(f);
|
symbol_table_entry *entry = new(mem_ctx) symbol_table_entry(f);
|
||||||
return _mesa_symbol_table_add_symbol(table, -1, name, entry) == 0;
|
return _mesa_symbol_table_add_symbol(table, -1, f->name, entry) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
ir_variable *glsl_symbol_table::get_variable(const char *name)
|
ir_variable *glsl_symbol_table::get_variable(const char *name)
|
||||||
|
@@ -99,7 +99,7 @@ public:
|
|||||||
/*@{*/
|
/*@{*/
|
||||||
bool add_variable(const char *name, ir_variable *v);
|
bool add_variable(const char *name, ir_variable *v);
|
||||||
bool add_type(const char *name, const glsl_type *t);
|
bool add_type(const char *name, const glsl_type *t);
|
||||||
bool add_function(const char *name, ir_function *f);
|
bool add_function(ir_function *f);
|
||||||
/*@}*/
|
/*@}*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -64,7 +64,7 @@ public:
|
|||||||
|
|
||||||
/* Add the new function to the symbol table.
|
/* Add the new function to the symbol table.
|
||||||
*/
|
*/
|
||||||
this->symbols->add_function(this->function->name, this->function);
|
this->symbols->add_function(this->function);
|
||||||
}
|
}
|
||||||
return visit_continue;
|
return visit_continue;
|
||||||
}
|
}
|
||||||
|
@@ -221,7 +221,7 @@ read_function(_mesa_glsl_parse_state *st, s_list *list, bool skip_body)
|
|||||||
ir_function *f = st->symbols->get_function(name->value());
|
ir_function *f = st->symbols->get_function(name->value());
|
||||||
if (f == NULL) {
|
if (f == NULL) {
|
||||||
f = new(ctx) ir_function(name->value());
|
f = new(ctx) ir_function(name->value());
|
||||||
added = st->symbols->add_function(f->name, f);
|
added = st->symbols->add_function(f);
|
||||||
assert(added);
|
assert(added);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -546,7 +546,7 @@ populate_symbol_table(gl_shader *sh)
|
|||||||
ir_function *func;
|
ir_function *func;
|
||||||
|
|
||||||
if ((func = inst->as_function()) != NULL) {
|
if ((func = inst->as_function()) != NULL) {
|
||||||
sh->symbols->add_function(func->name, func);
|
sh->symbols->add_function(func);
|
||||||
} else if ((var = inst->as_variable()) != NULL) {
|
} else if ((var = inst->as_variable()) != NULL) {
|
||||||
sh->symbols->add_variable(var->name, var);
|
sh->symbols->add_variable(var->name, var);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user