version 1.12, 1995/10/02 17:37:57 |
version 1.13, 1997/03/12 18:28:58 |
|
|
return (getinode(st, (quad_t)(elem * elsz / CHAR_BIT))); |
return (getinode(st, (quad_t)(elem * elsz / CHAR_BIT))); |
} |
} |
|
|
#ifdef XXX_BROKEN_GCC |
|
static int |
|
quad_t_eq(x, y) |
|
quad_t x, y; |
|
{ |
|
return (x == y); |
|
} |
|
|
|
static int |
|
u_quad_t_eq(x, y) |
|
u_quad_t x, y; |
|
{ |
|
return (x == y); |
|
} |
|
#endif |
|
|
|
/* |
/* |
* Do only as much as necessary to compute constant expressions. |
* Do only as much as necessary to compute constant expressions. |
* Called only if the operator allows folding and (both) operands |
* Called only if the operator allows folding and (both) operands |
|
|
q = utyp ? ul > ur : sl > sr; |
q = utyp ? ul > ur : sl > sr; |
break; |
break; |
case EQ: |
case EQ: |
#ifdef XXX_BROKEN_GCC |
|
q = utyp ? u_quad_t_eq(ul, ur) : quad_t_eq(sl, sr); |
|
#else |
|
q = utyp ? ul == ur : sl == sr; |
q = utyp ? ul == ur : sl == sr; |
#endif |
|
break; |
break; |
case NE: |
case NE: |
q = utyp ? ul != ur : sl != sr; |
q = utyp ? ul != ur : sl != sr; |
|
|
return (cn); |
return (cn); |
} |
} |
|
|
#ifdef XXX_BROKEN_GCC |
|
int |
|
ldbl_t_neq(x, y) |
|
ldbl_t x, y; |
|
{ |
|
return (x != y); |
|
} |
|
#endif |
|
|
|
/* |
/* |
* Same for operators whose operands are compared with 0 (test context). |
* Same for operators whose operands are compared with 0 (test context). |
*/ |
*/ |
|
|
lerror("foldtst() 1"); |
lerror("foldtst() 1"); |
|
|
if (isftyp(tn->tn_left->tn_type->t_tspec)) { |
if (isftyp(tn->tn_left->tn_type->t_tspec)) { |
#ifdef XXX_BROKEN_GCC |
|
l = ldbl_t_neq(tn->tn_left->tn_val->v_ldbl, 0.0); |
|
#else |
|
l = tn->tn_left->tn_val->v_ldbl != 0.0; |
l = tn->tn_left->tn_val->v_ldbl != 0.0; |
#endif |
|
} else { |
} else { |
l = tn->tn_left->tn_val->v_quad != 0; |
l = tn->tn_left->tn_val->v_quad != 0; |
} |
} |
|
|
if (modtab[tn->tn_op].m_binary) { |
if (modtab[tn->tn_op].m_binary) { |
if (isftyp(tn->tn_right->tn_type->t_tspec)) { |
if (isftyp(tn->tn_right->tn_type->t_tspec)) { |
#ifdef XXX_BROKEN_GCC |
|
r = ldbl_t_neq(tn->tn_right->tn_val->v_ldbl, 0.0); |
|
#else |
|
r = tn->tn_right->tn_val->v_ldbl != 0.0; |
r = tn->tn_right->tn_val->v_ldbl != 0.0; |
#endif |
|
} else { |
} else { |
r = tn->tn_right->tn_val->v_quad != 0; |
r = tn->tn_right->tn_val->v_quad != 0; |
} |
} |