glsl2: Fix builtin prototypes defined in multiple glsl/builtins/* files

If we put the protos in separate ir_functions, they wouldn't be found
at lookup time for linking.

Fixes:
glsl-fs-texture2d-bias
glsl-fs-texture2dproj-bias
glsl-fs-texture2dproj-bias-2
glsl-lod-bias
glsl1-texture2D(), computed coordinate
This commit is contained in:
Eric Anholt 2010-07-22 14:57:55 -07:00
parent 47c90b1447
commit 1bef4c8c4b

View file

@ -55,7 +55,17 @@ public:
virtual ir_visitor_status visit_enter(ir_function *ir)
{
assert(this->function == NULL);
this->function = new(this->mem_ctx) ir_function(ir->name);
this->function = this->symbols->get_function(ir->name);
if (!this->function) {
this->function = new(this->mem_ctx) ir_function(ir->name);
list->push_tail(this->function);
/* Add the new function to the symbol table.
*/
this->symbols->add_function(this->function->name, this->function);
}
return visit_continue;
}
@ -64,15 +74,6 @@ public:
(void) ir;
assert(this->function != NULL);
/* Add the new function (and all its signatures) to the end of the
* instruction stream.
*/
list->push_tail(this->function);
/* Add the new function to the symbol table.
*/
this->symbols->add_function(this->function->name, this->function);
this->function = NULL;
return visit_continue;
}