On Tue, Feb 28, 2017 at 4:09 PM, Luc Van Oostenryck <luc.vanoostenryck@xxxxxxxxx> wrote: > There is indeed some problems regarding this, we looked a bit at this > some weeks ago. However I firmly believe that the information about > the type belong to the operations and not the values. I've taken a very quick look at this "mt->foo = (void *)0" The type info is perfectly present. If in sparse-llvm.c:output_op_store() you add somewhere something like: fprintf(stderr, "-> %s\n", show_typename(insn->type)); You will see that it display the expected type: "int *". This is all the type info needed: it's the type of insn->target (the value to be stored) and the type of the dereferencing of insn->src (the (base) address). The problem is that output_op_store() doesn't use this info, it tries to deduce this type via pseudo_to_value() but pseudo_to_value() wrongly assumes that all PSEUDO_VALUE-pseudo are integer. Luc -- To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html