static unsigned cfi_parse_reg (void) { int regno; expressionS exp; #ifdef tc_regname_to_dw2regnum SKIP_WHITESPACE (); if (is_name_beginner (*input_line_pointer) || (*input_line_pointer == '%' && is_name_beginner (*++input_line_pointer))) { char *name, c; name = input_line_pointer; c = get_symbol_end (); if ((regno = tc_regname_to_dw2regnum (name)) < 0) { as_bad (_("bad register expression")); regno = 0; } *input_line_pointer = c; return regno; } #endif expression_and_evaluate (&exp); switch (exp.X_op) { case O_register: case O_constant: regno = exp.X_add_number; break; default: as_bad (_("bad register expression")); regno = 0; break; } return regno; }
static void tc_parse_to_dw2regnum (expressionS *exp) { # ifdef tc_regname_to_dw2regnum SKIP_WHITESPACE (); if (is_name_beginner (*input_line_pointer) || (*input_line_pointer == '%' && is_name_beginner (*++input_line_pointer))) { char *name, c; name = input_line_pointer; c = get_symbol_end (); exp->X_op = O_constant; exp->X_add_number = tc_regname_to_dw2regnum (name); *input_line_pointer = c; } else # endif expression_and_evaluate (exp); }