- Pass host-specific insn and register printing functions to 
  the register allocator, so it can print debug info specific
  to the host.

- Properly propagate some no-return attributes.



git-svn-id: svn://svn.valgrind.org/vex/trunk@54 8f6e269a-dfd6-0310-a8e1-e2731360e62c
diff --git a/priv/main/vex_main.c b/priv/main/vex_main.c
index c9f4b4b..9d64e81 100644
--- a/priv/main/vex_main.c
+++ b/priv/main/vex_main.c
@@ -22,6 +22,7 @@
 
 void LibVEX_Init (
    /* failure exit function */
+   __attribute__ ((noreturn))
    void (*failure_exit) ( void ),
    /* logging output function */
    void (*log_bytes) ( Char*, Int nbytes ),
@@ -83,6 +84,8 @@
    void (*mapRegs) (HRegRemap*, HInstr*);
    HInstr* (*genSpill) ( HReg, Int );
    HInstr* (*genReload) ( HReg, Int );
+   void (*ppInstr) ( HInstr* );
+   void (*ppReg) ( HReg );
    HInstrArray* (*iselBB) ( IRBB* );
    IRBB* (*bbToIR) ( Char*, Addr64, Int*, Bool(*)(Addr64) );
 
@@ -104,6 +107,8 @@
          mapRegs     = (void(*)(HRegRemap*,HInstr*)) mapRegs_X86Instr;
          genSpill    = (HInstr*(*)(HReg,Int)) genSpill_X86;
          genReload   = (HInstr*(*)(HReg,Int)) genReload_X86;
+         ppInstr     = (void(*)(HInstr*)) ppX86Instr;
+         ppReg       = (void(*)(HReg)) ppHRegX86;
          iselBB      = iselBB_X86;
          break;
       default:
@@ -140,7 +145,8 @@
    rcode = doRegisterAllocation ( vcode, available_real_regs,
                   	       	  n_available_real_regs,
 			          isMove, getRegUsage, mapRegs, 
-			          genSpill, genReload );
+			          genSpill, genReload,
+				  ppInstr, ppReg );
 
    /* Assemble, etc. */
    LibVEX_Clear(True);