- tarval *tv;
- union ieee754_double x;
-
- /* assumed by tarval_hash(): */
- assert (sizeof (float) * CHAR_BIT == 32);
- assert (sizeof (double) * CHAR_BIT == 64);
-
-# if 0
- /* assumed by tarval_chil & friends: */
- assert ( (irm_C == irm_c+1) && (irm_h == irm_C+1)
- && (irm_H == irm_h+1) && (irm_i == irm_H+1)
- && (irm_I == irm_i+1) && (irm_l == irm_I+1)
- && (irm_L == irm_l+1));
-
- /* assumed everywhere: */
- for (i = 0; i <= irm_L-irm_c; i += 2) {
- assert ( IS_POW2 (max_chil[i+1]+1)
- && (min_chil[i] == -max_chil[i]-1)
- && ((tarval_CHIL)max_chil[i+1] == (tarval_CHIL)max_chil[i]-min_chil[i]));
- }
-# endif
-
-
- tv = (tarval *)obstack_alloc (&tv_obst, sizeof (tarval));
- tv->mode = mode_T;
- tarval_bad = tarval_identify (tv);
-
- tarval_b_false = tarval_from_long (mode_b, 0);
- tarval_b_true = tarval_from_long (mode_b, 1);
-
- /* IsInf <-> exponent == 0x7ff && ! (bits | fraction_low) */
- tv = (tarval *)obstack_alloc (&tv_obst, sizeof (tarval));
- tv->mode = mode_d;
- x.ieee.negative = 0;
- x.ieee.exponent = 0x7ff;
- x.ieee.mantissa0 = 0;
- x.ieee.mantissa1 = 0;
- tv->u.d = x.d;
- tarval_d_Inf = tarval_identify (tv);
-
- /* IsNaN <-> exponent==0x7ff && (qnan_bit | bits | fraction_low) */
- tv = (tarval *)obstack_alloc (&tv_obst, sizeof (tarval));
- tv->mode = mode_d;
- x.ieee_nan.negative = 0;
- x.ieee_nan.exponent = 0x7ff;
- x.ieee_nan.quiet_nan = 1; /* @@@ quiet or signalling? */
- x.ieee_nan.mantissa0 = 42;
- x.ieee_nan.mantissa1 = 0;
- assert(x.d != x.d /* x.d is NaN */);
- tv->u.d = x.d;
- tarval_d_NaN = tarval_identify (tv);
-
- tv = (tarval *)obstack_alloc (&tv_obst, sizeof (tarval));
- tv->mode = mode_p;
- tv->u.p.xname = NULL;
- tv->u.p.ent = NULL;
- tv->u.p.tv = NULL;
- tarval_p_void = tarval_identify (tv);
-
- tv = (tarval *)obstack_alloc (&tv_obst, sizeof (tarval));
-
-
- tarval_mode_null [irm_f] = tarval_from_long (mode_f, 0);
- tarval_mode_null [irm_d] = tarval_from_long (mode_d, 0);
- tarval_mode_null [irm_c] = tarval_from_long (mode_c, 0);
- tarval_mode_null [irm_C] = tarval_from_long (mode_C, 0);
- tarval_mode_null [irm_h] = tarval_from_long (mode_h, 0);
- tarval_mode_null [irm_H] = tarval_from_long (mode_H, 0);
- tarval_mode_null [irm_i] = tarval_from_long (mode_i, 0);
- tarval_mode_null [irm_I] = tarval_from_long (mode_I, 0);
- tarval_mode_null [irm_l] = tarval_from_long (mode_l, 0);
- tarval_mode_null [irm_L] = tarval_from_long (mode_L, 0);
- tarval_mode_null [irm_b] = tarval_b_false;
- tarval_mode_null [irm_p] = tarval_p_void;