}
expression_t *con;
- if (is_local_variable(op1) && is_constant_expression(op2)) {
+ if (is_local_variable(op1) && is_constant_expression(op2) == EXPR_CLASS_CONSTANT) {
var = op1->reference.entity;
con = op2;
- } else if (is_constant_expression(op1) && is_local_variable(op2)) {
+ } else if (is_constant_expression(op1) == EXPR_CLASS_CONSTANT && is_local_variable(op2)) {
cmp_val = get_inversed_pnc(cmp_val);
var = op2->reference.entity;
con = op1;
type_t *type = skip_typeref(expression->base.type);
ir_mode *mode = get_ir_mode_arithmetic(type);
- if (is_constant_expression(expression->left)) {
+ if (is_constant_expression(expression->left) == EXPR_CLASS_CONSTANT) {
bool val = fold_constant_to_bool(expression->left);
expression_kind_t ekind = expression->base.kind;
assert(ekind == EXPR_BINARY_LOGICAL_AND || ekind == EXPR_BINARY_LOGICAL_OR);
}
}
- if (is_constant_expression(expression->right)) {
+ if (is_constant_expression(expression->right) == EXPR_CLASS_CONSTANT) {
bool valr = fold_constant_to_bool(expression->right);
return valr ?
new_Const(get_mode_one(mode)) :
init_ir_types();
- assert(is_constant_expression(expression));
+ assert(is_constant_expression(expression) == EXPR_CLASS_CONSTANT);
ir_graph *old_current_ir_graph = current_ir_graph;
current_ir_graph = get_const_code_irg();
dbg_info *const dbgi = get_dbg_info(&expression->base.source_position);
/* first try to fold a constant condition */
- if (is_constant_expression(expression->condition)) {
+ if (is_constant_expression(expression->condition) == EXPR_CLASS_CONSTANT) {
bool val = fold_constant_to_bool(expression->condition);
if (val) {
expression_t *true_expression = expression->true_expression;
ir_mode *mode = get_ir_mode_arithmetic(expression->base.type);
long v;
- if (is_constant_expression(expression->value)) {
+ if (is_constant_expression(expression->value) == EXPR_CLASS_CONSTANT) {
v = 1;
} else {
v = 0;
return res;
}
- if (is_constant_expression(expression)) {
+ if (is_constant_expression(expression) == EXPR_CLASS_CONSTANT) {
ir_node *res = _expression_to_firm(expression);
ir_mode *mode = get_ir_mode_arithmetic(expression->base.type);
assert(is_Const(res));
/* set branch prediction info based on __builtin_expect */
if (is_builtin_expect(expression) && is_Cond(cond)) {
call_argument_t *argument = expression->call.arguments->next;
- if (is_constant_expression(argument->expression)) {
+ if (is_constant_expression(argument->expression) == EXPR_CLASS_CONSTANT) {
bool cnst = fold_constant_to_bool(argument->expression);
cond_jmp_predicate pred;
return;
}
- if (!is_constant_initializer(initializer)) {
+ if (is_constant_initializer(initializer) == EXPR_CLASS_VARIABLE) {
bool old_initializer_use_bitfield_basetype
= initializer_use_bitfield_basetype;
initializer_use_bitfield_basetype = true;
ir_node * body_block;
ir_node * false_block;
expression_t *const cond = statement->condition;
- if (is_constant_expression(cond) && fold_constant_to_bool(cond)) {
+ if (is_constant_expression(cond) == EXPR_CLASS_CONSTANT &&
+ fold_constant_to_bool(cond)) {
/* Shortcut for while (true). */
body_block = header_block;
false_block = NULL;