*
* \author Ian Romanick
*/
-#include <cstdio>
#include "ir.h"
#include "glsl_symbol_table.h"
+namespace {
+
/**
* Visitor used to import function prototypes
*
/* 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;
}
{
assert(this->function != NULL);
- ir_function_signature *copy =
- new(mem_ctx) ir_function_signature(ir->return_type);
-
- copy->is_defined = false;
- copy->is_built_in = ir->is_built_in;
-
- /* Clone the parameter list, but NOT the body.
- */
- foreach_list_const(node, &ir->parameters) {
- const ir_variable *const param = (const ir_variable *) node;
-
- assert(const_cast<ir_variable *>(param)->as_variable() != NULL);
-
- ir_variable *const param_copy = param->clone(mem_ctx, NULL);
- copy->parameters.push_tail(param_copy);
- }
+ ir_function_signature *copy = ir->clone_prototype(mem_ctx, NULL);
this->function->add_signature(copy);
void *mem_ctx;
};
+} /* anonymous namespace */
/**
* Import function prototypes from one IR tree into another
* \param dest Destination instruction stream where new \c ir_function and
* \c ir_function_signature nodes will be stored
* \param symbols Symbol table where new functions will be stored
- * \param mem_ctx talloc memory context used for new allocations
+ * \param mem_ctx ralloc memory context used for new allocations
*/
void
import_prototypes(const exec_list *source, exec_list *dest,