/* If we have an absolute symbol or a
reg, then we know its value now. */
segment = S_GET_SEGMENT (exprP->X_add_symbol);
- if (mode != expr_defer && segment == absolute_section)
+ if (!expr_defer_p (mode) && segment == absolute_section)
{
exprP->X_op = O_constant;
exprP->X_add_number = S_GET_VALUE (exprP->X_add_symbol);
exprP->X_add_symbol = NULL;
}
- else if (mode != expr_defer && segment == reg_section)
+ else if (!expr_defer_p (mode) && segment == reg_section)
{
exprP->X_op = O_register;
exprP->X_add_number = S_GET_VALUE (exprP->X_add_symbol);
/* If we have an absolute symbol or a
reg, then we know its value now. */
segment = S_GET_SEGMENT (exprP->X_add_symbol);
- if (mode != expr_defer && segment == absolute_section)
+ if (!expr_defer_p (mode) && segment == absolute_section)
{
exprP->X_op = O_constant;
exprP->X_add_number = S_GET_VALUE (exprP->X_add_symbol);
exprP->X_add_symbol = NULL;
}
- else if (mode != expr_defer && segment == reg_section)
+ else if (!expr_defer_p (mode) && segment == reg_section)
{
exprP->X_op = O_register;
exprP->X_add_number = S_GET_VALUE (exprP->X_add_symbol);
/* If we have an absolute symbol or a reg,
then we know its value now. */
segment = S_GET_SEGMENT (exprP->X_add_symbol);
- if (mode != expr_defer && segment == absolute_section)
+ if (!expr_defer_p (mode) && segment == absolute_section)
{
exprP->X_op = O_constant;
exprP->X_add_number = S_GET_VALUE (exprP->X_add_symbol);
exprP->X_add_symbol = NULL;
}
- else if (mode != expr_defer && segment == reg_section)
+ else if (!expr_defer_p (mode) && segment == reg_section)
{
exprP->X_op = O_register;
exprP->X_add_number = S_GET_VALUE (exprP->X_add_symbol);
/* If we have an absolute symbol or a reg, then we know its value
now. Copy the symbol value expression to propagate X_md. */
bool done = false;
- if (mode != expr_defer
+ if (!expr_defer_p (mode)
&& !S_FORCE_RELOC (sym, 0))
{
segT segment = S_GET_SEGMENT (sym);
/* If we have an absolute symbol or a reg, then we know its
value now. */
segment = S_GET_SEGMENT (exprP->X_add_symbol);
- if (mode != expr_defer && segment == absolute_section)
+ if (!expr_defer_p (mode) && segment == absolute_section)
{
exprP->X_op = O_constant;
exprP->X_add_number = S_GET_VALUE (exprP->X_add_symbol);
exprP->X_add_symbol = NULL;
}
- else if (mode != expr_defer && segment == reg_section)
+ else if (!expr_defer_p (mode) && segment == reg_section)
{
exprP->X_op = O_register;
exprP->X_add_number = S_GET_VALUE (exprP->X_add_symbol);
else
{
expressionp->X_op = O_symbol;
- if (mode != expr_defer)
+ if (mode != expr_defer_incl_dot)
{
expressionp->X_add_symbol = symbol_temp_new_now ();
#ifdef tc_new_dot_label
/* If we have an absolute symbol or a reg, then we know its
value now. */
segment = S_GET_SEGMENT (symbolP);
- if (mode != expr_defer
+ if (!expr_defer_p (mode)
&& segment == absolute_section
&& !S_FORCE_RELOC (symbolP, 0))
{
expressionP->X_op = O_constant;
expressionP->X_add_number = S_GET_VALUE (symbolP);
}
- else if (mode != expr_defer && segment == reg_section)
+ else if (!expr_defer_p (mode) && segment == reg_section)
{
expressionP->X_op = O_register;
expressionP->X_add_number = S_GET_VALUE (symbolP);
if (expressionP->X_add_symbol)
symbol_mark_used (expressionP->X_add_symbol);
- if (mode != expr_defer)
+ if (!expr_defer_p (mode))
{
expressionP->X_add_symbol
= symbol_clone_if_forward_ref (expressionP->X_add_symbol);
is_unsigned = resultP->X_unsigned && right.X_unsigned;
- if (mode == expr_defer
+ if (expr_defer_p (mode)
&& ((resultP->X_add_symbol != NULL
&& S_IS_FORWARD_REF (resultP->X_add_symbol))
|| (right.X_add_symbol != NULL
{
expr_evaluate,
expr_normal,
- expr_defer
+ expr_defer,
+ expr_defer_incl_dot,
};
+#define expr_defer_p(m) ((m) >= expr_defer)
+
/* "result" should be type (expressionS *). */
#define expression(result) expr (0, result, expr_normal)
#define expression_and_evaluate(result) expr (0, result, expr_evaluate)
if (!S_IS_FORWARD_REF (symbolP))
(void) expression (&exp);
else
- (void) deferred_expression (&exp);
+ (void) expr (0, &exp, expr_defer_incl_dot);
if (exp.X_op == O_illegal)
as_bad (_("illegal expression"));