On Tue, Mar 07, 2017 at 11:33:19PM +0800, Christopher Li wrote: > On Sun, Mar 5, 2017 at 7:20 PM, Luc Van Oostenryck > <luc.vanoostenryck@xxxxxxxxx> wrote: > > Like for all others instructions, LLVM needs the type > > of each operands. However this information is not always > > available via the pseudo, like here when passing a integer > > constant as argument since for sparse constants are typeless. > > > > Fix this by getting the type via the function prototype. > > > > + LLVMValueRef value; > > + if (arg->type == PSEUDO_VAL) { > > + /* Value pseudos do not have type information. */ > > + /* Use the function prototype to get the type. */ > > + struct symbol *ctype = get_nth1_arg(insn->func->sym, i + 1); > > I try to come up with an example to use the PREPARE_PTR_LIST() in this patch. > I hit a bug "insn->func->sym" assume "insn->func" is a function symbol node. > If "insn->func" is a function pointer then access "insn->func->sym" is wrong. Mmmm yes, indeed. > Any way, my modify patch attached. It should work similar to this patch > without using the nth argument help function. My limited test hit this > function pointer bug. OK. -- 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