diff -rwu sparse.orig/linearize.c sparse/linearize.c --- sparse.orig/linearize.c 2008-06-28 22:44:21.714555764 +0100 +++ sparse/linearize.c 2008-06-30 23:20:30.777932755 +0100 @@ -55,7 +55,9 @@ static struct instruction *alloc_typed_instruction(int opcode, struct symbol *type) { - return alloc_instruction(opcode, type_size(type)); + struct instruction *insn = alloc_instruction(opcode, type_size(type)); + insn->type = type; + return insn; } static struct entrypoint *alloc_entrypoint(void) diff -rwu sparse.orig/linearize.h sparse/linearize.h --- sparse.orig/linearize.h 2008-06-28 22:44:21.714555764 +0100 +++ sparse/linearize.h 2008-06-30 23:20:04.425933822 +0100 @@ -71,6 +71,7 @@ size:24; struct basic_block *bb; struct position pos; + struct symbol *type; union { pseudo_t target; pseudo_t cond; /* for branch and switch */