diff options
author | Jan Beulich <jbeulich@novell.com> | 2005-03-15 15:41:31 +0000 |
---|---|---|
committer | Jan Beulich <jbeulich@novell.com> | 2005-03-15 15:41:31 +0000 |
commit | 43c3ab55ac48b523629ee064c1a515f2cdb55f83 (patch) | |
tree | 7155cb6ffd85dfde29b66628d75a037adb678222 /gas/expr.c | |
parent | 34723071b54c6f1bcc8e705c978efa3ddb47f2b2 (diff) | |
download | gdb-43c3ab55ac48b523629ee064c1a515f2cdb55f83.zip gdb-43c3ab55ac48b523629ee064c1a515f2cdb55f83.tar.gz gdb-43c3ab55ac48b523629ee064c1a515f2cdb55f83.tar.bz2 |
gas/
2005-03-15 Jan Beulich <jbeulich@novell.com>
* expr.c (operand): Merge handling of unary + into that for unary
-, !, and ~.
Diffstat (limited to 'gas/expr.c')
-rw-r--r-- | gas/expr.c | 34 |
1 files changed, 15 insertions, 19 deletions
@@ -1011,14 +1011,6 @@ operand (expressionS *expressionP) mri_char_constant (expressionP); break; - case '+': - /* Do not accept ++e as +(+e). - Disabled, since the preprocessor removes whitespace. */ - if (0 && *input_line_pointer == '+') - goto target_op; - (void) operand (expressionP); - break; - #ifdef TC_M68K case '"': /* Double quote is the bitwise not operator in MRI mode. */ @@ -1032,10 +1024,11 @@ operand (expressionS *expressionP) goto isname; case '!': case '-': + case '+': { - /* Do not accept --e as -(-e) + /* Do not accept ++e or --e as +(+e) or -(-e) Disabled, since the preprocessor removes whitespace. */ - if (0 && c == '-' && *input_line_pointer == '-') + if (0 && (c == '-' || c == '+') && *input_line_pointer == c) goto target_op; operand (expressionP); @@ -1052,7 +1045,7 @@ operand (expressionS *expressionP) } else if (c == '~' || c == '"') expressionP->X_add_number = ~ expressionP->X_add_number; - else + else if (c == '!') expressionP->X_add_number = ! expressionP->X_add_number; } else if (expressionP->X_op == O_big @@ -1099,14 +1092,17 @@ operand (expressionS *expressionP) else if (expressionP->X_op != O_illegal && expressionP->X_op != O_absent) { - expressionP->X_add_symbol = make_expr_symbol (expressionP); - if (c == '-') - expressionP->X_op = O_uminus; - else if (c == '~' || c == '"') - expressionP->X_op = O_bit_not; - else - expressionP->X_op = O_logical_not; - expressionP->X_add_number = 0; + if (c != '+') + { + expressionP->X_add_symbol = make_expr_symbol (expressionP); + if (c == '-') + expressionP->X_op = O_uminus; + else if (c == '~' || c == '"') + expressionP->X_op = O_bit_not; + else + expressionP->X_op = O_logical_not; + expressionP->X_add_number = 0; + } } else as_warn (_("Unary operator %c ignored because bad operand follows"), |