This is closer to what the C standard calls it (enumeration constant).
static const unsigned prec[] = {
[EXPR_ERROR] = PREC_PRIMARY,
[EXPR_REFERENCE] = PREC_PRIMARY,
- [EXPR_REFERENCE_ENUM_VALUE] = PREC_PRIMARY,
+ [EXPR_ENUM_CONSTANT] = PREC_PRIMARY,
[EXPR_LITERAL_INTEGER] = PREC_PRIMARY,
[EXPR_LITERAL_INTEGER_OCTAL] = PREC_PRIMARY,
[EXPR_LITERAL_INTEGER_HEXADECIMAL] = PREC_PRIMARY,
case EXPR_LITERAL_CASES: print_literal( &expr->literal); break;
case EXPR_OFFSETOF: print_offsetof_expression( &expr->offsetofe); break;
case EXPR_REFERENCE:
- case EXPR_REFERENCE_ENUM_VALUE: print_reference_expression( &expr->reference); break;
+ case EXPR_ENUM_CONSTANT: print_reference_expression( &expr->reference); break;
case EXPR_SELECT: print_select( &expr->select); break;
case EXPR_STATEMENT: print_statement_expression( &expr->statement); break;
case EXPR_STRING_LITERAL:
case EXPR_ALIGNOF:
case EXPR_BUILTIN_CONSTANT_P:
case EXPR_BUILTIN_TYPES_COMPATIBLE_P:
- case EXPR_REFERENCE_ENUM_VALUE:
+ case EXPR_ENUM_CONSTANT:
return EXPR_CLASS_CONSTANT;
case EXPR_SIZEOF: {
return wide_string_literal_to_firm(&expression->string_literal);
case EXPR_REFERENCE:
return reference_expression_to_firm(&expression->reference);
- case EXPR_REFERENCE_ENUM_VALUE:
+ case EXPR_ENUM_CONSTANT:
return enum_constant_to_firm(&expression->reference);
case EXPR_CALL:
return call_expression_to_firm(&expression->call);
typedef enum expression_kind_t {
EXPR_ERROR = 1,
EXPR_REFERENCE,
- EXPR_REFERENCE_ENUM_VALUE,
+ EXPR_ENUM_CONSTANT,
EXPR_LITERAL_BOOLEAN,
EXPR_LITERAL_INTEGER,
EXPR_LITERAL_INTEGER_OCTAL,
static const size_t sizes[] = {
[EXPR_ERROR] = sizeof(expression_base_t),
[EXPR_REFERENCE] = sizeof(reference_expression_t),
- [EXPR_REFERENCE_ENUM_VALUE] = sizeof(reference_expression_t),
+ [EXPR_ENUM_CONSTANT] = sizeof(reference_expression_t),
[EXPR_LITERAL_BOOLEAN] = sizeof(literal_expression_t),
[EXPR_LITERAL_INTEGER] = sizeof(literal_expression_t),
[EXPR_LITERAL_INTEGER_OCTAL] = sizeof(literal_expression_t),
case EXPR_OFFSETOF:
case EXPR_STATEMENT: // TODO
case EXPR_LABEL_ADDRESS:
- case EXPR_REFERENCE_ENUM_VALUE:
+ case EXPR_ENUM_CONSTANT:
return;
}
}
case EXPR_REFERENCE:
- case EXPR_REFERENCE_ENUM_VALUE:
+ case EXPR_ENUM_CONSTANT:
case EXPR_LITERAL_CASES:
case EXPR_STRING_LITERAL:
case EXPR_WIDE_STRING_LITERAL:
expression_kind_t kind = EXPR_REFERENCE;
if (entity->kind == ENTITY_ENUM_VALUE)
- kind = EXPR_REFERENCE_ENUM_VALUE;
+ kind = EXPR_ENUM_CONSTANT;
expression_t *expression = allocate_expression_zero(kind);
expression->base.source_position = pos;
switch (expr->kind) {
case EXPR_ERROR: return true; /* do NOT warn */
case EXPR_REFERENCE: return false;
- case EXPR_REFERENCE_ENUM_VALUE: return false;
+ case EXPR_ENUM_CONSTANT: return false;
case EXPR_LABEL_ADDRESS: return false;
/* suppress the warning for microsoft __noop operations */
case EXPR_LITERAL_CASES:
case EXPR_REFERENCE:
- case EXPR_REFERENCE_ENUM_VALUE:
+ case EXPR_ENUM_CONSTANT:
case EXPR_STRING_LITERAL:
case EXPR_WIDE_STRING_LITERAL:
case EXPR_FUNCNAME:
case EXPR_LITERAL_INTEGER_HEXADECIMAL:
fprintf(out, "0x%s", expression->literal.value.begin);
break;
- case EXPR_REFERENCE_ENUM_VALUE: {
+ case EXPR_ENUM_CONSTANT: {
/* UHOH... hacking */
entity_t *entity = expression->reference.entity;
write_enum_name(& entity->enum_value.enum_type->enumt);