[PATCH] cpu/opcodes: Sync up fr30.cpu and generated opcodes files
Andrew Burgess
andrew.burgess@embecosm.com
Sun Feb 14 00:44:00 GMT 2016
More information about the Binutils mailing list
Sun Feb 14 00:44:00 GMT 2016
- Previous message (by thread): objcopy --nocompress-debug-sections
- Next message (by thread): Commit: Allow numeric values for the flags and type fields in the .section directive
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
In commit b6518b3 (Fix compile time warnings generated when compiling with clang.) the generated fr30-ibld.c file was modified, but the underlying fr30.cpu file, from which it is generated was not. This commit updates the fr30.cpu file in such a way that the C code generated in fr30-ibld.c avoids the undefined behaviour that b6518b3 was trying to avoid, while also being something that CGEN can handle without any changes. cpu/ChangeLog: * fr30.cpu (f-m4): Adjust extract handler to avoid shifting a negative value (undefined behaviour in C). opcodes/ChangeLog: * fr30-ibld.c: Regenerate from latest cpu/fr30.cpu file. --- cpu/ChangeLog | 5 +++++ cpu/fr30.cpu | 7 +++---- opcodes/ChangeLog | 4 ++++ opcodes/fr30-ibld.c | 2 +- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/cpu/ChangeLog b/cpu/ChangeLog index 3d39b91..59782b5 100644 --- a/cpu/ChangeLog +++ b/cpu/ChangeLog @@ -1,3 +1,8 @@ +2016-02-14 Andrew Burgess <andrew.burgess@embecosm.com> + + * fr30.cpu (f-m4): Adjust extract handler to avoid shifting a + negative value (undefined behaviour in C). + 2016-02-02 Andrew Burgess <andrew.burgess@embecosm.com> * epiphany.opc (epiphany_print_insn): Set info->bytes_per_line to diff --git a/cpu/fr30.cpu b/cpu/fr30.cpu index 6c8e8ce..de15d1e 100644 --- a/cpu/fr30.cpu +++ b/cpu/fr30.cpu @@ -160,10 +160,9 @@ (df f-i4 "4 bit sign extended" () 8 4 INT #f #f) (df f-m4 "4 bit minus extended" () 8 4 UINT ((value pc) (and WI value (const #xf))) - ; ??? On a 64 bit host this doesn't get completely sign extended - ; if the value is recorded in a long, as it is during extraction. - ; Various fixes exist, pick one. - ((value pc) (or WI value (sll WI (const -1) (const 4)))) + ; We want every bit except the least significant 4 set, so take + ; the bit INVerse of setting the last significant 4 bits. + ((value pc) (or WI value (inv WI (const #xf)))) ) (dnf f-u8 "8 bit unsigned" () 8 8) (dnf f-i8 "8 bit unsigned" () 4 8) diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 24c1680..fc52c94 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,7 @@ +2016-02-14 Andrew Burgess <andrew.burgess@embecosm.com> + + * fr30-ibld.c: Regenerate from latest cpu/fr30.cpu file. + 2016-02-10 Claudiu Zissulescu <claziss@synopsys.com> Janek van Oirschot <jvanoirs@synopsys.com> diff --git a/opcodes/fr30-ibld.c b/opcodes/fr30-ibld.c index 1293e73..089254b 100644 --- a/opcodes/fr30-ibld.c +++ b/opcodes/fr30-ibld.c @@ -881,7 +881,7 @@ fr30_cgen_extract_operand (CGEN_CPU_DESC cd, { long value; length = extract_normal (cd, ex_info, insn_value, 0, 0, 8, 4, 16, total_length, pc, & value); - value = ((value) | (((-1UL) << (4)))); + value = ((value) | ((~ (15)))); fields->f_m4 = value; } break; -- 2.5.1
- Previous message (by thread): objcopy --nocompress-debug-sections
- Next message (by thread): Commit: Allow numeric values for the flags and type fields in the .section directive
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Binutils mailing list