Lines Matching refs:lp

336 dt_type_promote(dt_node_t *lp, dt_node_t *rp, ctf_file_t **ofp, ctf_id_t *otype)  in dt_type_promote()  argument
338 ctf_file_t *lfp = lp->dn_ctfp; in dt_type_promote()
339 ctf_id_t ltype = lp->dn_type; in dt_type_promote()
407 dt_node_promote(dt_node_t *lp, dt_node_t *rp, dt_node_t *dnp) in dt_node_promote() argument
409 dt_type_promote(lp, rp, &dnp->dn_ctfp, &dnp->dn_type); in dt_node_promote()
411 dt_node_attr_assign(dnp, dt_attr_min(lp->dn_attr, rp->dn_attr)); in dt_node_promote()
1046 dt_node_is_ptrcompat(const dt_node_t *lp, const dt_node_t *rp, in dt_node_is_ptrcompat() argument
1049 ctf_file_t *lfp = lp->dn_ctfp; in dt_node_is_ptrcompat()
1060 assert(lp->dn_flags & DT_NF_COOKED); in dt_node_is_ptrcompat()
1063 if (dt_node_is_dynamic(lp) || dt_node_is_dynamic(rp)) in dt_node_is_ptrcompat()
1066 lp_is_int = dt_node_is_integer(lp); in dt_node_is_ptrcompat()
1072 if (lp_is_int && (lp->dn_kind != DT_NODE_INT || lp->dn_value != 0)) in dt_node_is_ptrcompat()
1079 (lp->dn_flags & DT_NF_USERLAND) ^ (rp->dn_flags & DT_NF_USERLAND))) in dt_node_is_ptrcompat()
1088 lbase = ctf_type_resolve(lfp, lp->dn_type); in dt_node_is_ptrcompat()
1181 dt_node_is_argcompat(const dt_node_t *lp, const dt_node_t *rp) in dt_node_is_argcompat() argument
1183 ctf_file_t *lfp = lp->dn_ctfp; in dt_node_is_argcompat()
1186 assert(lp->dn_flags & DT_NF_COOKED); in dt_node_is_argcompat()
1189 if (dt_node_is_integer(lp) && dt_node_is_integer(rp)) in dt_node_is_argcompat()
1192 if (dt_node_is_strcompat(lp) && dt_node_is_strcompat(rp)) in dt_node_is_argcompat()
1195 if (dt_node_is_stack(lp) && dt_node_is_stack(rp)) in dt_node_is_argcompat()
1198 if (dt_node_is_symaddr(lp) && dt_node_is_symaddr(rp)) in dt_node_is_argcompat()
1201 if (dt_node_is_usymaddr(lp) && dt_node_is_usymaddr(rp)) in dt_node_is_argcompat()
1204 switch (ctf_type_kind(lfp, ctf_type_resolve(lfp, lp->dn_type))) { in dt_node_is_argcompat()
1208 return (ctf_type_compat(lfp, lp->dn_type, rfp, rp->dn_type)); in dt_node_is_argcompat()
1210 return (dt_node_is_ptrcompat(lp, rp, NULL, NULL)); in dt_node_is_argcompat()
1938 dt_cast(dt_node_t *lp, dt_node_t *rp) in dt_cast() argument
1941 size_t dstsize = dt_node_type_size(lp); in dt_cast()
1962 dt_node_op2(int op, dt_node_t *lp, dt_node_t *rp) in dt_node_op2() argument
1980 if (lp->dn_kind == DT_NODE_INT && rp->dn_kind == DT_NODE_INT) { in dt_node_op2()
1981 uintmax_t l = lp->dn_value; in dt_node_op2()
2004 dt_node_promote(lp, rp, dnp); in dt_node_op2()
2008 dt_node_promote(lp, rp, dnp); in dt_node_op2()
2012 dt_node_promote(lp, rp, dnp); in dt_node_op2()
2025 dt_node_promote(lp, rp, dnp); in dt_node_op2()
2034 dt_node_promote(lp, rp, dnp); in dt_node_op2()
2043 dt_node_promote(lp, rp, dnp); in dt_node_op2()
2052 dt_node_promote(lp, rp, dnp); in dt_node_op2()
2062 dt_node_type_propagate(lp, dnp); in dt_node_op2()
2064 dt_attr_min(lp->dn_attr, rp->dn_attr)); in dt_node_op2()
2068 dt_node_type_propagate(lp, dnp); in dt_node_op2()
2070 dt_attr_min(lp->dn_attr, rp->dn_attr)); in dt_node_op2()
2074 dt_node_promote(lp, rp, dnp); in dt_node_op2()
2078 dt_node_promote(lp, rp, dnp); in dt_node_op2()
2082 dt_node_promote(lp, rp, dnp); in dt_node_op2()
2085 dt_node_promote(lp, rp, dnp); in dt_node_op2()
2092 dt_node_promote(lp, rp, dnp); in dt_node_op2()
2104 dt_node_free(lp); in dt_node_op2()
2111 dt_node_is_integer(lp)) { in dt_node_op2()
2112 dt_cast(lp, rp); in dt_node_op2()
2113 dt_node_type_propagate(lp, rp); in dt_node_op2()
2114 dt_node_attr_assign(rp, dt_attr_min(lp->dn_attr, rp->dn_attr)); in dt_node_op2()
2115 dt_node_free(lp); in dt_node_op2()
2127 dnp->dn_left = lp; in dt_node_op2()
2134 dt_node_op3(dt_node_t *expr, dt_node_t *lp, dt_node_t *rp) in dt_node_op3() argument
2139 return (expr->dn_value != 0 ? lp : rp); in dt_node_op3()
2144 dnp->dn_left = lp; in dt_node_op3()
3174 dt_node_t *lp = dnp->dn_left; in dt_assign_common() local
3179 dt_cast(lp, rp); in dt_assign_common()
3181 if (!(lp->dn_flags & DT_NF_LVALUE)) { in dt_assign_common()
3187 if (!(lp->dn_flags & DT_NF_WRITABLE)) { in dt_assign_common()
3192 dt_node_type_propagate(lp, dnp); /* see K&R[A7.17] */ in dt_assign_common()
3193 dt_node_attr_assign(dnp, dt_attr_min(lp->dn_attr, rp->dn_attr)); in dt_assign_common()
3200 dt_node_t *lp = dnp->dn_left; in dt_cook_op2() local
3221 if (lp->dn_kind == DT_NODE_IDENT) { in dt_cook_op2()
3225 if (lp->dn_op == DT_TOK_AGG) { in dt_cook_op2()
3227 idp = dt_idhash_lookup(dhp, lp->dn_string + 1); in dt_cook_op2()
3232 &yypcb->pcb_globals, lp->dn_string); in dt_cook_op2()
3237 dt_xcook_ident(lp, dhp, idkind, B_TRUE); in dt_cook_op2()
3239 dt_xcook_ident(lp, dhp, idp->di_kind, B_FALSE); in dt_cook_op2()
3241 lp = dnp->dn_left = dt_node_cook(lp, 0); in dt_cook_op2()
3252 if (lp->dn_kind == DT_NODE_VAR) { in dt_cook_op2()
3253 if (lp->dn_ident->di_kind == DT_IDENT_ARRAY) { in dt_cook_op2()
3254 if (lp->dn_args != NULL) in dt_cook_op2()
3256 } else if (!dt_ident_unref(lp->dn_ident)) { in dt_cook_op2()
3259 } else if (lp->dn_kind != DT_NODE_AGG) { in dt_cook_op2()
3268 lp = dnp->dn_left = dt_node_cook(lp, DT_IDFLG_REF); in dt_cook_op2()
3271 if (!dt_node_is_integer(lp) || !dt_node_is_integer(rp)) { in dt_cook_op2()
3276 dt_node_promote(lp, rp, dnp); /* see K&R[A7.11-13] */ in dt_cook_op2()
3281 lp = dnp->dn_left = dt_node_cook(lp, DT_IDFLG_REF); in dt_cook_op2()
3284 if (!dt_node_is_integer(lp) || !dt_node_is_integer(rp)) { in dt_cook_op2()
3289 dt_node_type_propagate(lp, dnp); /* see K&R[A7.8] */ in dt_cook_op2()
3290 dt_node_attr_assign(dnp, dt_attr_min(lp->dn_attr, rp->dn_attr)); in dt_cook_op2()
3294 lp = dnp->dn_left = dt_node_cook(lp, DT_IDFLG_REF); in dt_cook_op2()
3297 if (!dt_node_is_integer(lp) || !dt_node_is_integer(rp)) { in dt_cook_op2()
3302 dt_node_promote(lp, rp, dnp); /* see K&R[A7.6] */ in dt_cook_op2()
3307 lp = dnp->dn_left = dt_node_cook(lp, DT_IDFLG_REF); in dt_cook_op2()
3310 if (!dt_node_is_arith(lp) || !dt_node_is_arith(rp)) { in dt_cook_op2()
3315 dt_node_promote(lp, rp, dnp); /* see K&R[A7.6] */ in dt_cook_op2()
3321 lp = dnp->dn_left = dt_node_cook(lp, DT_IDFLG_REF); in dt_cook_op2()
3324 if (!dt_node_is_scalar(lp) || !dt_node_is_scalar(rp)) { in dt_cook_op2()
3331 dt_node_attr_assign(dnp, dt_attr_min(lp->dn_attr, rp->dn_attr)); in dt_cook_op2()
3348 lp = dnp->dn_left = dt_node_cook(lp, DT_IDFLG_REF); in dt_cook_op2()
3350 kind = ctf_type_kind(lp->dn_ctfp, in dt_cook_op2()
3351 ctf_type_resolve(lp->dn_ctfp, lp->dn_type)); in dt_cook_op2()
3355 lp->dn_ctfp, lp->dn_type, rp->dn_string, &val) == 0) { in dt_cook_op2()
3363 dt_node_type_name(lp, n1, sizeof (n1)), in dt_cook_op2()
3374 dt_node_type_assign(rp, lp->dn_ctfp, lp->dn_type, in dt_cook_op2()
3392 if (ctf_type_compat(lp->dn_ctfp, lp->dn_type, in dt_cook_op2()
3395 else if (dt_node_is_integer(lp) && dt_node_is_integer(rp)) in dt_cook_op2()
3397 else if (dt_node_is_strcompat(lp) && dt_node_is_strcompat(rp) && in dt_cook_op2()
3398 (dt_node_is_string(lp) || dt_node_is_string(rp))) in dt_cook_op2()
3400 else if (dt_node_is_ptrcompat(lp, rp, NULL, NULL) == 0) { in dt_cook_op2()
3403 dt_node_type_name(lp, n1, sizeof (n1)), opstr(op), in dt_cook_op2()
3409 dt_node_attr_assign(dnp, dt_attr_min(lp->dn_attr, rp->dn_attr)); in dt_cook_op2()
3422 lp = dnp->dn_left = dt_node_cook(lp, DT_IDFLG_REF); in dt_cook_op2()
3425 lp_is_ptr = dt_node_is_string(lp) || in dt_cook_op2()
3426 (dt_node_is_pointer(lp) && !dt_node_is_vfptr(lp)); in dt_cook_op2()
3427 lp_is_int = dt_node_is_integer(lp); in dt_cook_op2()
3434 dt_type_promote(lp, rp, &ctfp, &type); in dt_cook_op2()
3437 ctfp = lp->dn_ctfp; in dt_cook_op2()
3438 type = lp->dn_type; in dt_cook_op2()
3439 uref = lp->dn_flags & DT_NF_USERLAND; in dt_cook_op2()
3445 dt_node_is_ptrcompat(lp, rp, NULL, NULL)) { in dt_cook_op2()
3452 dt_node_type_name(lp, n1, sizeof (n1)), opstr(op), in dt_cook_op2()
3457 dt_node_attr_assign(dnp, dt_attr_min(lp->dn_attr, rp->dn_attr)); in dt_cook_op2()
3470 if (lp->dn_kind == DT_NODE_IDENT) { in dt_cook_op2()
3471 dt_xcook_ident(lp, dtp->dt_globals, in dt_cook_op2()
3475 lp = dnp->dn_left = in dt_cook_op2()
3476 dt_node_cook(lp, DT_IDFLG_REF | DT_IDFLG_MOD); in dt_cook_op2()
3481 if (!dt_node_is_integer(lp) || !dt_node_is_integer(rp)) { in dt_cook_op2()
3489 if (lp->dn_kind == DT_NODE_IDENT) { in dt_cook_op2()
3490 dt_xcook_ident(lp, dtp->dt_globals, in dt_cook_op2()
3494 lp = dnp->dn_left = in dt_cook_op2()
3495 dt_node_cook(lp, DT_IDFLG_REF | DT_IDFLG_MOD); in dt_cook_op2()
3500 if (!dt_node_is_arith(lp) || !dt_node_is_arith(rp)) { in dt_cook_op2()
3513 if (lp->dn_kind == DT_NODE_IDENT) { in dt_cook_op2()
3514 if (lp->dn_op == DT_TOK_AGG) { in dt_cook_op2()
3515 dt_xcook_ident(lp, dtp->dt_aggs, in dt_cook_op2()
3518 dt_xcook_ident(lp, dtp->dt_globals, in dt_cook_op2()
3523 lp = dnp->dn_left = dt_node_cook(lp, 0); /* don't set mod yet */ in dt_cook_op2()
3535 if (lp->dn_kind == DT_NODE_AGG) { in dt_cook_op2()
3536 const char *aname = lp->dn_ident->di_name; in dt_cook_op2()
3537 dt_ident_t *oid = lp->dn_ident->di_iarg; in dt_cook_op2()
3552 lp->dn_ident->di_lineno); in dt_cook_op2()
3554 lp->dn_ident->di_iarg = rp->dn_ident; in dt_cook_op2()
3562 if (lp->dn_aggfun != NULL) { in dt_cook_op2()
3567 lp->dn_aggfun = rp; in dt_cook_op2()
3568 lp = dt_node_cook(lp, DT_IDFLG_MOD); in dt_cook_op2()
3573 return (lp); in dt_cook_op2()
3595 if (lp->dn_kind == DT_NODE_VAR && in dt_cook_op2()
3596 dt_ident_unref(lp->dn_ident)) { in dt_cook_op2()
3597 dt_node_type_assign(lp, ctfp, type, B_FALSE); in dt_cook_op2()
3598 dt_ident_type_assign(lp->dn_ident, ctfp, type); in dt_cook_op2()
3601 lp->dn_flags |= DT_NF_USERLAND; in dt_cook_op2()
3602 lp->dn_ident->di_flags |= DT_IDFLG_USER; in dt_cook_op2()
3606 if (lp->dn_kind == DT_NODE_VAR) in dt_cook_op2()
3607 lp->dn_ident->di_flags |= DT_IDFLG_MOD; in dt_cook_op2()
3614 if (!dt_node_is_string(lp)) { in dt_cook_op2()
3615 kind = ctf_type_kind(lp->dn_ctfp, in dt_cook_op2()
3616 ctf_type_resolve(lp->dn_ctfp, lp->dn_type)); in dt_cook_op2()
3622 dt_node_type_name(lp, n1, sizeof (n1))); in dt_cook_op2()
3627 ctf_type_compat(lp->dn_ctfp, lp->dn_type, ctfp, type)) in dt_cook_op2()
3630 if (dt_node_is_argcompat(lp, rp)) in dt_cook_op2()
3635 dt_node_type_name(lp, n1, sizeof (n1)), opstr(op), in dt_cook_op2()
3641 if (lp->dn_kind == DT_NODE_IDENT) { in dt_cook_op2()
3642 dt_xcook_ident(lp, dtp->dt_globals, in dt_cook_op2()
3646 lp = dnp->dn_left = in dt_cook_op2()
3647 dt_node_cook(lp, DT_IDFLG_REF | DT_IDFLG_MOD); in dt_cook_op2()
3652 if (dt_node_is_string(lp) || dt_node_is_string(rp)) { in dt_cook_op2()
3655 dt_node_type_name(lp, n1, sizeof (n1)), opstr(op), in dt_cook_op2()
3664 if (dt_node_is_integer(lp) == 0 || in dt_cook_op2()
3666 if (!dt_node_is_pointer(lp) || dt_node_is_vfptr(lp)) { in dt_cook_op2()
3671 dt_node_is_ptrcompat(lp, rp, NULL, NULL) == 0) { in dt_cook_op2()
3674 dt_node_type_name(lp, n1, sizeof (n1)), in dt_cook_op2()
3689 if (lp->dn_kind == DT_NODE_IDENT) { in dt_cook_op2()
3692 if (strcmp(lp->dn_string, "self") == 0) { in dt_cook_op2()
3694 } else if (strcmp(lp->dn_string, "this") == 0) { in dt_cook_op2()
3714 lp = dnp->dn_left = dt_node_cook(lp, DT_IDFLG_REF); in dt_cook_op2()
3721 if ((idp = dt_node_resolve(lp, DT_IDENT_XLSOU)) != NULL || in dt_cook_op2()
3722 (idp = dt_node_resolve(lp, DT_IDENT_XLPTR)) != NULL) { in dt_cook_op2()
3739 ctfp = lp->dn_ctfp; in dt_cook_op2()
3740 type = ctf_type_resolve(ctfp, lp->dn_type); in dt_cook_op2()
3741 uref = lp->dn_flags & DT_NF_USERLAND; in dt_cook_op2()
3801 dt_node_attr_assign(dnp, lp->dn_attr); in dt_cook_op2()
3807 if (op == DT_TOK_DOT && (lp->dn_flags & DT_NF_LVALUE) && in dt_cook_op2()
3811 if (lp->dn_flags & DT_NF_WRITABLE) in dt_cook_op2()
3833 if (lp->dn_kind == DT_NODE_AGG) { in dt_cook_op2()
3834 if (lp->dn_aggtup != NULL) { in dt_cook_op2()
3837 "array\n", lp->dn_ident->di_name); in dt_cook_op2()
3840 lp->dn_aggtup = rp; in dt_cook_op2()
3841 lp = dt_node_cook(lp, 0); in dt_cook_op2()
3846 return (lp); in dt_cook_op2()
3849 assert(lp->dn_kind == DT_NODE_VAR); in dt_cook_op2()
3850 idp = lp->dn_ident; in dt_cook_op2()
3897 assert(lp->dn_kind == DT_NODE_VAR); in dt_cook_op2()
3898 assert(lp->dn_args == NULL); in dt_cook_op2()
3901 bcopy(lp, dnp, sizeof (dt_node_t)); in dt_cook_op2()
3907 dt_node_free(lp); in dt_cook_op2()
3914 assert(lp->dn_kind == DT_NODE_TYPE); in dt_cook_op2()
3916 dxp = dt_xlator_lookup(dtp, rp, lp, DT_XLATE_FUZZY); in dt_cook_op2()
3922 dt_node_type_name(lp, n2, sizeof (n2))); in dt_cook_op2()
3925 dnp->dn_ident = dt_xlator_ident(dxp, lp->dn_ctfp, lp->dn_type); in dt_cook_op2()
3937 assert(lp->dn_kind == DT_NODE_TYPE); in dt_cook_op2()
3940 ltype = ctf_type_resolve(lp->dn_ctfp, lp->dn_type); in dt_cook_op2()
3941 lkind = ctf_type_kind(lp->dn_ctfp, ltype); in dt_cook_op2()
3953 if (ctf_type_compat(lp->dn_ctfp, lp->dn_type, in dt_cook_op2()
3956 else if (dt_node_is_scalar(lp) && in dt_cook_op2()
3959 else if (dt_node_is_void(lp)) in dt_cook_op2()
3963 else if (dt_node_is_string(lp) && (dt_node_is_scalar(rp) || in dt_cook_op2()
3970 dt_node_type_name(lp, n2, sizeof (n2))); in dt_cook_op2()
3973 dt_node_type_propagate(lp, dnp); /* see K&R[A7.5] */ in dt_cook_op2()
3974 dt_node_attr_assign(dnp, dt_attr_min(lp->dn_attr, rp->dn_attr)); in dt_cook_op2()
3987 lp = dnp->dn_left = dt_node_cook(lp, DT_IDFLG_REF); in dt_cook_op2()
3990 if (dt_node_is_dynamic(lp) || dt_node_is_dynamic(rp)) { in dt_cook_op2()
3995 if (dt_node_is_actfunc(lp) || dt_node_is_actfunc(rp)) { in dt_cook_op2()
4001 dt_node_attr_assign(dnp, dt_attr_min(lp->dn_attr, rp->dn_attr)); in dt_cook_op2()
4021 dt_node_name(lp, n1, sizeof (n1))); in dt_cook_op2()
4049 dt_node_t *lp, *rp; in dt_cook_op3() local
4054 lp = dnp->dn_left = dt_node_cook(dnp->dn_left, DT_IDFLG_REF); in dt_cook_op3()
4062 if (dt_node_is_dynamic(lp) || dt_node_is_dynamic(rp)) { in dt_cook_op3()
4072 if (ctf_type_compat(lp->dn_ctfp, lp->dn_type, in dt_cook_op3()
4074 ctfp = lp->dn_ctfp; in dt_cook_op3()
4075 type = lp->dn_type; in dt_cook_op3()
4076 } else if (dt_node_is_integer(lp) && dt_node_is_integer(rp)) { in dt_cook_op3()
4077 dt_type_promote(lp, rp, &ctfp, &type); in dt_cook_op3()
4078 } else if (dt_node_is_strcompat(lp) && dt_node_is_strcompat(rp) && in dt_cook_op3()
4079 (dt_node_is_string(lp) || dt_node_is_string(rp))) { in dt_cook_op3()
4082 } else if (dt_node_is_ptrcompat(lp, rp, &ctfp, &type) == 0) { in dt_cook_op3()
4087 if (dt_node_is_actfunc(lp) || dt_node_is_actfunc(rp)) { in dt_cook_op3()
4094 dt_attr_min(lp->dn_attr, rp->dn_attr))); in dt_cook_op3()
4610 dt_node_link(dt_node_t *lp, dt_node_t *rp) in dt_node_link() argument
4614 if (lp == NULL) in dt_node_link()
4617 return (lp); in dt_node_link()
4619 for (dnp = lp; dnp->dn_list != NULL; dnp = dnp->dn_list) in dt_node_link()
4623 return (lp); in dt_node_link()