Instead of making the computed address a pointer to an int type large enough to hold a pointer, make it a pointer to the memory object being loaded. This fixes another LLVM warning. Cc: Pekka Enberg <penberg@xxxxxxxxxx> Cc: Christopher Li <sparse@xxxxxxxxxxx> Cc: Jeff Garzik <jgarzik@xxxxxxxxxx> Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> Signed-off-by: Jonathan Neuschäfer <j.neuschaefer@xxxxxxx> --- sparse-llvm.c | 2 +- validation/backend/load-type.c | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 validation/backend/load-type.c diff --git a/sparse-llvm.c b/sparse-llvm.c index 2048a1b..7f45dc0 100644 --- a/sparse-llvm.c +++ b/sparse-llvm.c @@ -615,7 +615,7 @@ static void output_op_load(struct function *fn, struct instruction *insn) /* convert address back to pointer */ addr = LLVMBuildIntToPtr(fn->builder, addr_i, - LLVMPointerType(int_type, 0), "addr"); + LLVMTypeOf(src_p), "addr"); /* perform load */ target = LLVMBuildLoad(fn->builder, addr, "load_target"); diff --git a/validation/backend/load-type.c b/validation/backend/load-type.c new file mode 100644 index 0000000..80416ca --- /dev/null +++ b/validation/backend/load-type.c @@ -0,0 +1,12 @@ +extern struct _IO_FILE *stdin; + +static void sub(struct _IO_FILE *in) {} + +static void test(void) { + sub(stdin); +} + +/* + * check-name: Type of loaded objects + * check-command: ./sparsec -c $file -o tmp.o + */ -- 1.7.10.4 -- 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