aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2020-10-27 01:19:19 +0100
committerLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2020-11-01 01:04:06 +0100
commitabfaa2dfb4d69eb0857d5af8ed082ccf8b824c46 (patch)
tree3781ebe67cfa50e7a1b47141588cd50359ae0f39
parent7204b60f37561620102437f421300b24f91d03c3 (diff)
downloadsparse-abfaa2dfb4d69eb0857d5af8ed082ccf8b824c46.tar.gz
fix usage count in linearize_fma()
When linearizing __builtin_fma(), the arguments were just assigned but the corresponding usage was not tracked. Fix this. Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
-rw-r--r--linearize.c6
-rw-r--r--validation/linear/builtin-fma.c2
2 files changed, 4 insertions, 4 deletions
diff --git a/linearize.c b/linearize.c
index 6c72f2e3..85b8ac60 100644
--- a/linearize.c
+++ b/linearize.c
@@ -2582,11 +2582,11 @@ static pseudo_t linearize_fma(struct entrypoint *ep, struct expression *expr)
struct expression *arg;
PREPARE_PTR_LIST(expr->args, arg);
- insn->src1 = linearize_expression(ep, arg);
+ use_pseudo(insn, linearize_expression(ep, arg), &insn->src1);
NEXT_PTR_LIST(arg)
- insn->src2 = linearize_expression(ep, arg);
+ use_pseudo(insn, linearize_expression(ep, arg), &insn->src2);
NEXT_PTR_LIST(arg)
- insn->src3 = linearize_expression(ep, arg);
+ use_pseudo(insn, linearize_expression(ep, arg), &insn->src3);
FINISH_PTR_LIST(arg);
add_one_insn(ep, insn);
diff --git a/validation/linear/builtin-fma.c b/validation/linear/builtin-fma.c
index b1024f39..9ca50f0f 100644
--- a/validation/linear/builtin-fma.c
+++ b/validation/linear/builtin-fma.c
@@ -11,7 +11,7 @@ double fma(double a, double x, double y)
fma:
.L0:
<entry-point>
- fmadd.64 %r4 <- %r1, %r2, %r3
+ fmadd.64 %r4 <- %arg1, %arg2, %arg3
ret.64 %r4