namespace nv50_ir {
-Function::Function(Program *p, const char *fnName)
+Function::Function(Program *p, const char *fnName, uint32_t label)
: call(this),
+ label(label),
name(fnName),
prog(p)
{
Function::~Function()
{
+ prog->del(this, id);
+
if (domTree)
delete domTree;
if (bbArray)
bool
Pass::doRun(Program *prog, bool ordered, bool skipPhi)
{
- for (ArrayList::Iterator fi = prog->allFuncs.iterator();
- !fi.end(); fi.next()) {
- Function *fn = reinterpret_cast<Function *>(fi.get());
- if (!doRun(fn, ordered, skipPhi))
+ for (IteratorRef it = prog->calls.iteratorDFS(false);
+ !it->end(); it->next()) {
+ Graph::Node *n = reinterpret_cast<Graph::Node *>(it->get());
+ if (!doRun(Function::get(n), ordered, skipPhi))
return false;
}
return !err;