https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88589

--- Comment #5 from Lionel Debroux <lionel_debroux at yahoo dot fr> ---
Thanks for your tests.
On my side, with Debian 9's m68k-elf-gcc:
* the ICE reproduces just fine when using -Os but not when using -O2;
* when the cause of the ICE is commented out, the wrong codegen for the line
between the two nops also reproduces when using either -Os or -O2.
Well, I guess I'll have to build upstream GCC... later :)

I chose -Os because the smaller the ROM dumper, the lower its RAM consumption.

Understood about -mshort. It's been the default in GCC4TI and its dead ancestor
since the early 2000s, since that's what the target platform's OS (AMS for
TI-68k calculators) uses. As such, it received downstream validation on
multiple GCC major versions and thousands of programs over the years.
However, said downstream is a franken-GCC for m68k-coff, latest version 4.1.2
(!), carrying a significant set of changes over upstream GCC, so tests there
clearly do not carry to any upstream version...
Changes in the GCC patch range from features (register parameter passing,
register-relative addressing, support for a custom floating-point format, etc.)
and optimization tweaks to upstream reverts, e.g. the sudden horrible
pessimization (ISTR one program's size jumping up dozens of KBs to well over 64
KB, the limit on that OS) of code using formerly global "cast constructors" /
"compound literals", a popular idiom for that environment.

Obviously, GCC4TI's ~15-year-old heavily patched GCC 4.1, and companion tools
inherited from the dead ancestor (patched binutils, see e.g.
https://sourceware.org/bugzilla/show_bug.cgi?id=1198 ; .s patcher to complement
partial changes in GCC; full-custom optimizing linker with support for the
AmigaOS object file format unsupported by binutils), are increasingly hard to
support on modern platforms, for an ever lowering number of users of the target
platform. That's why I wanted to get libticalcs rid of the dependency on GCC4TI
for a while, and Debian packaging m68k-elf binutils+GCC gave me a path to that
aim... or so I thought :)
By the end of 2018, several days after I posted this bug report, I had finished
rewriting libticalcs' TI-68k ROM dumper in pure assembly, using GCC4TI GCC's
output as a starting point, so that there's only a dependency on stock / distro
binutils.

Reply via email to