* values.
* @date 2003
* @author Mathias Heil
- * @version $Id$
* @brief
*
* Values are stored in a format depending upon chosen arithmetic
int tarval_is_constant(ir_tarval *tv)
{
- int num_res = sizeof(reserved_tv) / sizeof(reserved_tv[0]);
+ size_t const num_res = ARRAY_SIZE(reserved_tv);
/* reserved tarvals are NOT constants. Note that although
tarval_b_true and tarval_b_false are reserved, they are constants of course. */
case irms_internal_boolean:
return (a == tarval_b_false) ? a : b;
+ case irms_reference:
case irms_int_number:
sc_and(a->value, b->value, NULL);
return get_tarval(sc_get_buffer(), sc_get_buffer_length(), a->mode);
case irms_internal_boolean:
return a == tarval_b_true && b == tarval_b_false ? tarval_b_true : tarval_b_false;
+ case irms_reference:
case irms_int_number:
sc_andnot(a->value, b->value, NULL);
return get_tarval(sc_get_buffer(), sc_get_buffer_length(), a->mode);
case irms_internal_boolean:
return (a == tarval_b_true) ? a : b;
+ case irms_reference:
case irms_int_number:
sc_or(a->value, b->value, NULL);
return get_tarval(sc_get_buffer(), sc_get_buffer_length(), a->mode);
case irms_internal_boolean:
return (a == b)? tarval_b_false : tarval_b_true;
+ case irms_reference:
case irms_int_number:
sc_xor(a->value, b->value, NULL);
return get_tarval(sc_get_buffer(), sc_get_buffer_length(), a->mode);
case irma_twos_complement:
return sc_sub_bits(tv->value, get_mode_size_bits(tv->mode), byte_ofs);
case irma_ieee754:
+ case irma_x86_extended_float:
return fc_sub_bits((const fp_value*) tv->value, get_mode_size_bits(tv->mode), byte_ofs);
default:
panic("get_tarval_sub_bits(): arithmetic mode not supported");