diff options
author | Jonathan Neuschäfer <j.neuschaefer@gmx.net> | 2013-05-18 19:52:04 +0200 |
---|---|---|
committer | Pekka Enberg <penberg@kernel.org> | 2013-05-19 10:57:49 +0300 |
commit | 47259c45e369bf0c9a338e1f31dea22b0139e9b6 (patch) | |
tree | 222f99877940a5931fac59ef7c831be0e05b868a | |
parent | b17550b274916fc5a4b6f89a3f95572e6f9bce7f (diff) | |
download | sparse-47259c45e369bf0c9a338e1f31dea22b0139e9b6.tar.gz |
sparse, llvm: Fix resulting type of store address calculations
Use the fix from d5bd3662 ("sparse, llvm: Fix type of loaded values").
Cc: Christopher Li <sparse@chrisli.org>
Cc: Jeff Garzik <jgarzik@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Xi Wang <xi.wang@gmail.com>
Signed-off-by: Jonathan Neuschäfer <j.neuschaefer@gmx.net>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
-rw-r--r-- | sparse-llvm.c | 2 | ||||
-rw-r--r-- | validation/backend/store-type.c | 12 |
2 files changed, 13 insertions, 1 deletions
diff --git a/sparse-llvm.c b/sparse-llvm.c index 00ace6e8..9b768b54 100644 --- a/sparse-llvm.c +++ b/sparse-llvm.c @@ -583,7 +583,7 @@ static void output_op_store(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"); target_in = pseudo_to_value(fn, insn, insn->target); diff --git a/validation/backend/store-type.c b/validation/backend/store-type.c new file mode 100644 index 00000000..9e2ce73f --- /dev/null +++ b/validation/backend/store-type.c @@ -0,0 +1,12 @@ +struct foo; +static struct foo *var; + +static void set(struct foo *f) +{ + var = f; +} + +/* + * check-name: Type of stored objects + * check-command: ./sparsec -c $file -o tmp.o + */ |