Fix ir_dead_code for function refactoring.
diff --git a/ir_dead_code.cpp b/ir_dead_code.cpp
index aae45d9..81fbeba 100644
--- a/ir_dead_code.cpp
+++ b/ir_dead_code.cpp
@@ -62,7 +62,6 @@
     */
    /*@{*/
    virtual void visit(ir_variable *);
-   virtual void visit(ir_label *);
    virtual void visit(ir_loop *);
    virtual void visit(ir_loop_jump *);
    virtual void visit(ir_function_signature *);
@@ -122,12 +121,6 @@
 
 
 void
-ir_dead_code_visitor::visit(ir_label *ir)
-{
-   ir->signature->accept(this);
-}
-
-void
 ir_dead_code_visitor::visit(ir_loop *ir)
 {
    find_dead_code(&ir->body_instructions, this);
@@ -325,10 +318,14 @@
 
    foreach_iter(exec_list_iterator, iter, *instructions) {
       ir_instruction *ir = (ir_instruction *)iter.get();
-      ir_label *label = ir->as_label();
-      if (label) {
-	 if (do_dead_code(&label->signature->body))
-	    progress = true;
+      ir_function *f = ir->as_function();
+      if (f) {
+	 foreach_iter(exec_list_iterator, sigiter, *f) {
+	    ir_function_signature *sig =
+	       (ir_function_signature *) sigiter.get();
+	    if (do_dead_code(&sig->body))
+	       progress = true;
+	 }
       }
    }