%T originally allowed to move between registers and memory, using an anadorned operand for the piece that comes first in memory, and using %T for the second part. This does not work with the SH4 floating point registers for little endian code. The #ifdef __LITTLE_ENDIAN__ sequences in lib1funcs.asm:udivsi3_i4 are work around this defect, but these kinds of ifdefs do not scale well.
The SHMEDIA truncdisi2 pattern really should use %R - it couldn't originally because of a bug in %R, but that's fixed now. -- Summary: %T output specifier doesn't work right for floating point registers Product: gcc Version: 4.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: amylaar at gcc dot gnu dot org GCC target triplet: sh*-*-* http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27059