Lines Matching defs:tn

368  * member of the struct or union specified by the tn argument.
371 strmemb(tnode_t *tn, op_t op, sym_t *msym)
398 t = (tp = tn->tn_type)->t_tspec;
500 if (tflag && tn->tn_type->t_tspec == PTR) {
706 cconv(tnode_t *tn)
714 if (tn->tn_type->t_tspec == ARRAY) {
715 if (!tn->tn_lvalue) {
720 tn = mktnode(AMPER, tincref(tn->tn_type->t_subt, PTR),
721 tn, NULL);
729 if (tn->tn_type->t_tspec == FUNC)
730 tn = bldamper(tn, 1);
733 if (tn->tn_lvalue) {
734 tp = tduptyp(tn->tn_type);
736 tn = mktnode(LOAD, tp, tn, NULL);
739 return (tn);
756 tnode_t *tn;
792 for (tn=ln; tn->tn_op==CVT && !tn->tn_cast; tn=tn->tn_left)
794 olt = tn->tn_type->t_tspec;
795 for (tn=rn; tn->tn_op==CVT && !tn->tn_cast; tn=tn->tn_left)
797 ort = tn->tn_type->t_tspec;
1483 promote(op_t op, int farg, tnode_t *tn)
1489 t = tn->tn_type->t_tspec;
1492 return (tn);
1500 if (tn->tn_type->t_isfield) {
1501 len = tn->tn_type->t_flen;
1540 if (t != tn->tn_type->t_tspec) {
1541 ntp = tduptyp(tn->tn_type);
1547 tn = convert(op, 0, ntp, tn);
1550 return (tn);
1633 convert(op_t op, int arg, type_t *tp, tnode_t *tn)
1638 if (tn->tn_lvalue)
1642 if ((ot = tn->tn_type->t_tspec) == PTR)
1643 ost = tn->tn_type->t_subt->t_tspec;
1646 ptconv(arg, nt, ot, tp, tn);
1648 iiconv(op, arg, nt, ot, tp, tn);
1650 tn->tn_op == CON && tn->tn_val->v_quad == 0) {
1653 piconv(op, nt, tp, tn);
1655 ppconv(op, tn, tp);
1662 if (tn->tn_op != CON || nt == VOID) {
1663 ntn->tn_left = tn;
1667 cvtcon(op, arg, ntn->tn_type, ntn->tn_val, tn->tn_val);
1682 ptconv(int arg, tspec_t nt, tspec_t ot, type_t *tp, tnode_t *tn)
1698 ptn = promote(NOOP, 1, tn);
1734 iiconv(op_t op, int arg, tspec_t nt, tspec_t ot, type_t *tp, tnode_t *tn)
1736 if (tn->tn_op == CON)
1761 warning(298, tyname(tn->tn_type), arg);
1763 warning(132, tyname(tn->tn_type));
1773 piconv(op_t op, tspec_t nt, type_t *tp, tnode_t *tn)
1776 if (tn->tn_op == CON)
1799 ppconv(op_t op, tnode_t *tn, type_t *tp)
1812 ot = tn->tn_type->t_subt->t_tspec;
1831 if (getbound(tp->t_subt) > getbound(tn->tn_type->t_subt)) {
1837 tp->t_subt->t_str != tn->tn_type->t_subt->t_str) ||
2311 bldamper(tnode_t *tn, int noign)
2316 if (!noign && ((t = tn->tn_type->t_tspec) == ARRAY || t == FUNC)) {
2320 return (tn);
2324 if (tn->tn_op == STAR &&
2325 tn->tn_left->tn_type->t_tspec == PTR &&
2326 tn->tn_left->tn_type->t_subt == tn->tn_type) {
2327 return (tn->tn_left);
2330 ntn = mktnode(AMPER, tincref(tn->tn_type, PTR), tn, NULL);
2623 fold(tnode_t *tn)
2634 v->v_tspec = t = tn->tn_type->t_tspec;
2637 ul = sl = tn->tn_left->tn_val->v_quad;
2638 if (modtab[tn->tn_op].m_binary)
2639 ur = sr = tn->tn_right->tn_val->v_quad;
2644 switch (tn->tn_op) {
2753 warning(141, modtab[tn->tn_op].m_name);
2758 cn = getcnode(tn->tn_type, v);
2767 foldtst(tnode_t *tn)
2774 v->v_tspec = tn->tn_type->t_tspec;
2775 if (tn->tn_type->t_tspec != INT)
2778 if (isftyp(tn->tn_left->tn_type->t_tspec)) {
2779 l = tn->tn_left->tn_val->v_ldbl != 0.0;
2781 l = tn->tn_left->tn_val->v_quad != 0;
2784 if (modtab[tn->tn_op].m_binary) {
2785 if (isftyp(tn->tn_right->tn_type->t_tspec)) {
2786 r = tn->tn_right->tn_val->v_ldbl != 0.0;
2788 r = tn->tn_right->tn_val->v_quad != 0;
2792 switch (tn->tn_op) {
2809 return (getcnode(tn->tn_type, v));
2816 foldflt(tnode_t *tn)
2824 v->v_tspec = t = tn->tn_type->t_tspec;
2829 if (t != tn->tn_left->tn_type->t_tspec)
2831 if (modtab[tn->tn_op].m_binary && t != tn->tn_right->tn_type->t_tspec)
2834 l = tn->tn_left->tn_val->v_ldbl;
2835 if (modtab[tn->tn_op].m_binary)
2836 r = tn->tn_right->tn_val->v_ldbl;
2838 switch (tn->tn_op) {
2899 warning(142, modtab[tn->tn_op].m_name);
2909 return (getcnode(tn->tn_type, v));
2983 cast(tnode_t *tn, type_t *tp)
2987 if (tn == NULL)
2990 tn = cconv(tn);
2993 ot = tn->tn_type->t_tspec;
3019 if (!tp->t_subt->t_const && tn->tn_type->t_subt->t_const) {
3030 tn = convert(CVT, 0, tp, tn);
3031 tn->tn_cast = 1;
3033 return (tn);
3178 tnode_t *tn) /* argument */
3188 if (typeok(FARG, n, ln, tn)) {
3189 if (!eqtype(tp, tn->tn_type, 1, 0, (warn = 0, &warn)) || warn)
3190 tn = convert(FARG, n, tp, tn);
3193 return (tn);
3202 constant(tnode_t *tn)
3206 if (tn != NULL)
3207 tn = cconv(tn);
3208 if (tn != NULL)
3209 tn = promote(NOOP, 0, tn);
3214 if (tn == NULL) {
3222 v->v_tspec = tn->tn_type->t_tspec;
3224 if (tn->tn_op == CON) {
3225 if (tn->tn_type->t_tspec != tn->tn_val->v_tspec)
3227 if (isityp(tn->tn_val->v_tspec)) {
3228 v->v_ansiu = tn->tn_val->v_ansiu;
3229 v->v_quad = tn->tn_val->v_quad;
3232 v->v_quad = tn->tn_val->v_ldbl;
3255 expr(tnode_t *tn, int vctx, int tctx)
3258 if (tn == NULL && nerr == 0)
3261 if (tn == NULL) {
3270 chkmisc(tn, vctx, tctx, !tctx, 0, 0, 0);
3271 if (tn->tn_op == ASSIGN) {
3275 } else if (tn->tn_op == CON) {
3280 if (!modtab[tn->tn_op].m_sideeff) {
3285 if (tn->tn_op != COMMA && !vctx && !tctx)
3286 nulleff(tn);
3289 displexpr(tn, 0);
3296 nulleff(tnode_t *tn)
3302 while (!modtab[tn->tn_op].m_sideeff) {
3303 if (tn->tn_op == CVT && tn->tn_type->t_tspec == VOID) {
3304 tn = tn->tn_left;
3305 } else if (tn->tn_op == LOGAND || tn->tn_op == LOGOR) {
3310 tn = tn->tn_right;
3311 } else if (tn->tn_op == QUEST) {
3316 tn = tn->tn_right;
3317 } else if (tn->tn_op == COLON || tn->tn_op == COMMA) {
3322 if (modtab[tn->tn_left->tn_op].m_sideeff) {
3323 tn = tn->tn_left;
3324 } else if (modtab[tn->tn_right->tn_op].m_sideeff) {
3325 tn = tn->tn_right;
3333 if (!modtab[tn->tn_op].m_sideeff)
3343 displexpr(tnode_t *tn, int offs)
3347 if (tn == NULL) {
3351 (void)printf("%*sop %s ", offs, "", modtab[tn->tn_op].m_name);
3353 if (tn->tn_op == NAME) {
3355 tn->tn_sym->s_name, scltoa(tn->tn_sym->s_scl));
3356 } else if (tn->tn_op == CON && isftyp(tn->tn_type->t_tspec)) {
3357 (void)printf("%#g ", (double)tn->tn_val->v_ldbl);
3358 } else if (tn->tn_op == CON && isityp(tn->tn_type->t_tspec)) {
3359 uq = tn->tn_val->v_quad;
3362 } else if (tn->tn_op == CON) {
3363 if (tn->tn_type->t_tspec != PTR)
3366 (u_long)tn->tn_val->v_quad);
3367 } else if (tn->tn_op == STRING) {
3368 if (tn->tn_strg->st_tspec == CHAR) {
3369 (void)printf("\"%s\"", tn->tn_strg->st_cp);
3373 n = MB_CUR_MAX * (tn->tn_strg->st_len + 1);
3376 (void)wcstombs(s, tn->tn_strg->st_wcp, n);
3381 } else if (tn->tn_op == FSEL) {
3382 (void)printf("o=%d, l=%d ", tn->tn_type->t_foffs,
3383 tn->tn_type->t_flen);
3385 (void)printf("%s\n", ttos(tn->tn_type));
3386 if (tn->tn_op == NAME || tn->tn_op == CON || tn->tn_op == STRING)
3388 displexpr(tn->tn_left, offs + 2);
3389 if (modtab[tn->tn_op].m_binary ||
3390 (tn->tn_op == PUSH && tn->tn_right != NULL)) {
3391 displexpr(tn->tn_right, offs + 2);
3400 chkmisc(tnode_t *tn, int vctx, int tctx, int eqwarn, int fcall, int rvdisc,
3410 if (tn == NULL)
3413 ln = tn->tn_left;
3414 rn = tn->tn_right;
3415 mp = &modtab[op = tn->tn_op];
3482 outcall(tn, vctx || tctx, rvdisc);
3542 if (op == COLON && tn->tn_type->t_tspec == VOID)
3544 nrvdisc = op == CVT && tn->tn_type->t_tspec == VOID;
3577 chkaidx(tnode_t *tn, int amper)
3584 ln = tn->tn_left;
3585 rn = tn->tn_right;
3702 conaddr(tnode_t *tn, sym_t **symp, ptrdiff_t *offsp)
3708 switch (tn->tn_op) {
3710 if (tn->tn_right->tn_op != CON)
3715 if (tn->tn_left->tn_op == CON) {
3716 offs1 = (ptrdiff_t)tn->tn_left->tn_val->v_quad;
3717 if (conaddr(tn->tn_right, &sym, &offs2) == -1)
3719 } else if (tn->tn_right->tn_op == CON) {
3720 offs2 = (ptrdiff_t)tn->tn_right->tn_val->v_quad;
3721 if (tn->tn_op == MINUS)
3723 if (conaddr(tn->tn_left, &sym, &offs1) == -1)
3732 if (tn->tn_left->tn_op == NAME) {
3733 *symp = tn->tn_left->tn_sym;
3735 } else if (tn->tn_left->tn_op == STRING) {
3744 t = tn->tn_type->t_tspec;
3745 ot = tn->tn_left->tn_type->t_tspec;
3751 if (conaddr(tn->tn_left, symp, offsp) == -1)
3803 precconf(tnode_t *tn)
3814 mp = &modtab[tn->tn_op];
3817 for (ln = tn->tn_left; ln->tn_op == CVT; ln = ln->tn_left)
3824 for (rn = tn->tn_right; tn->tn_op == CVT; rn = rn->tn_left)
3832 switch (tn->tn_op) {
3851 if (!lparn && lop != tn->tn_op) {
3858 if (!warn && !rparn && rop != tn->tn_op) {