- 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_sInt & 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_sInt[i+1]+1)
- && (min_sInt[i] == -max_sInt[i]-1)
- && ((tarval_uInt)max_sInt[i+1] == (tarval_uInt)max_sInt[i]-min_sInt[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_E] = tarval_from_long (mode_E, 0);
- tarval_mode_null [irm_Bs] = tarval_from_long (mode_Bs, 0);
- tarval_mode_null [irm_Bu] = tarval_from_long (mode_Bu, 0);
- tarval_mode_null [irm_Hs] = tarval_from_long (mode_Hs, 0);
- tarval_mode_null [irm_Hu] = tarval_from_long (mode_Hu, 0);
- tarval_mode_null [irm_Is] = tarval_from_long (mode_Is, 0);
- tarval_mode_null [irm_Iu] = tarval_from_long (mode_Iu, 0);
- tarval_mode_null [irm_Ls] = tarval_from_long (mode_Ls, 0);
- tarval_mode_null [irm_Lu] = tarval_from_long (mode_Lu, 0);
- tarval_mode_null [irm_C] = tarval_from_long (mode_C, 0);
- tarval_mode_null [irm_U] = tarval_from_long (mode_U, 0);
- tarval_mode_null [irm_b] = tarval_b_false;
- tarval_mode_null [irm_P] = tarval_P_void;