aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2019-09-03 14:44:00 +0200
committerLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2019-09-28 19:02:47 +0200
commit5d0c4d96bdf4ab5df4ef0e31ab433e605299aabd (patch)
tree02c39e0cba933891c8ffcc7d296ac34756fa77b8
parentad1e7dc055a1a177ca79c72de3c8c87594abba6c (diff)
downloadsparse-5d0c4d96bdf4ab5df4ef0e31ab433e605299aabd.tar.gz
asm: arrays & functions in non-memory operand degenerate into pointers
Non-memory asm operands are very much like function's arguments. As such, any array (or function designator) used as an asm operand need to degenerate into the corresponding pointer. Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
-rw-r--r--evaluate.c3
-rw-r--r--validation/eval/asm-degen.c1
2 files changed, 3 insertions, 1 deletions
diff --git a/evaluate.c b/evaluate.c
index 4f7efc48..15726069 100644
--- a/evaluate.c
+++ b/evaluate.c
@@ -3592,6 +3592,9 @@ static void evaluate_asm_memop(struct asm_operand *op)
evaluate_addressof(addr);
op->expr = addr;
+ } else {
+ evaluate_expression(op->expr);
+ degenerate(op->expr);
}
}
diff --git a/validation/eval/asm-degen.c b/validation/eval/asm-degen.c
index 5f319159..7bbed925 100644
--- a/validation/eval/asm-degen.c
+++ b/validation/eval/asm-degen.c
@@ -29,7 +29,6 @@ static void qux(void)
/*
* check-name: asm-degen
- * check-known-to-fail
*
* check-error-start
eval/asm-degen.c:12:24: warning: dereference of noderef expression