diff options
author | Nick Clifton <nickc@redhat.com> | 2022-03-21 11:33:59 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2022-03-21 11:33:59 +0000 |
commit | a58b0053f4c4b4f0089f3985a41d0deac4c59ea4 (patch) | |
tree | 77300c440e286ed65190cf20f84189bf86b2a2c4 /gas/config | |
parent | 1add37b567a7dee39d99f37b37802034c3fce9c4 (diff) | |
download | gdb-a58b0053f4c4b4f0089f3985a41d0deac4c59ea4.zip gdb-a58b0053f4c4b4f0089f3985a41d0deac4c59ea4.tar.gz gdb-a58b0053f4c4b4f0089f3985a41d0deac4c59ea4.tar.bz2 |
z80 assembler: Fix new unexpected overflow warning in v2.37
PR 28791
* config/tc-z80.c (emit_data_val): Do not warn about overlarge
constants generated by bit manipulation operators.
* testsuite/gas/z80/pr28791.s: New test source file.
* testsuite/gas/z80/pr28791.d: New test driver file.
Diffstat (limited to 'gas/config')
-rw-r--r-- | gas/config/tc-z80.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/gas/config/tc-z80.c b/gas/config/tc-z80.c index 522e909..81fbfe3 100644 --- a/gas/config/tc-z80.c +++ b/gas/config/tc-z80.c @@ -1134,7 +1134,15 @@ emit_data_val (expressionS * val, int size) if (val->X_op == O_constant) { int i; - if (is_overflow (val->X_add_number, size*8)) + + /* PR 28791: + Check for overflow, but ignore values that were generated by bit + manipulation operators (eg ~0xe6 and -7). This does mean that + manipluated overlarge values will not be reported (eg ~0x1234), + but it does help to maintain compatibility with earlier versions + of the assembler. */ + if (! val->X_extrabit + && is_overflow (val->X_add_number, size*8)) as_warn ( _("%d-bit overflow (%+ld)"), size*8, val->X_add_number); for (i = 0; i < size; ++i) p[i] = (char)(val->X_add_number >> (i*8)); |