[DTrace-devel] [PATCH] cg: use indirect load instructions for scalar DPTR and ALLOCA pointers

Kris Van Hees kris.van.hees at oracle.com
Mon Feb 20 04:34:41 UTC 2023


Signed-off-by: Kris Van Hees <kris.van.hees at oracle.com>
---
 libdtrace/dt_cg.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libdtrace/dt_cg.c b/libdtrace/dt_cg.c
index cc6ca05c..38c43df3 100644
--- a/libdtrace/dt_cg.c
+++ b/libdtrace/dt_cg.c
@@ -5395,7 +5395,7 @@ dt_cg_node(dt_node_t *dnp, dt_irlist_t *dlp, dt_regset_t *drp)
 						 dnp->dn_reg);
 			}
 
-			if (dnp->dn_child->dn_flags & DT_NF_DPTR)
+			if (dnp->dn_child->dn_flags & (DT_NF_ALLOCA | DT_NF_DPTR))
 				emit(dlp, BPF_LOAD(op, dnp->dn_reg, dnp->dn_reg, 0));
 			else
 				dt_cg_load_scalar(dnp, op, size, dlp, drp);
@@ -5546,7 +5546,7 @@ dt_cg_node(dt_node_t *dnp, dt_irlist_t *dlp, dt_regset_t *drp)
 
 			op = dt_cg_ldsize(dnp, ctfp, m.ctm_type, &size);
 
-			if (dnp->dn_left->dn_flags & DT_NF_DPTR)
+			if (dnp->dn_left->dn_flags & (DT_NF_ALLOCA | DT_NF_DPTR))
 				emit(dlp, BPF_LOAD(op, dnp->dn_left->dn_reg, dnp->dn_left->dn_reg, 0));
 			else
 				dt_cg_load_scalar(dnp->dn_left, op, size, dlp, drp);
-- 
2.39.1




More information about the DTrace-devel mailing list