Bug 29961 - SH port uses big-endian specific register numbers
Summary: SH port uses big-endian specific register numbers
Status: UNCONFIRMED
Alias: None
Product: gcc
Classification: Unclassified
Component: target (show other bugs)
Version: 4.3.0
: P3 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords: missed-optimization
Depends on:
Blocks: 29842
  Show dependency treegraph
 
Reported: 2006-11-23 20:13 UTC by Jorn Wolfgang Rennecke
Modified: 2024-08-06 04:38 UTC (History)
1 user (show)

See Also:
Host:
Target: sh-*-*
Build:
Known to work:
Known to fail:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jorn Wolfgang Rennecke 2006-11-23 20:13:50 UTC
The SH port internally uses fixed register numbers for MACH/MACL and the
floating point registers, which are only appropriate for big endian.
This prevents using SImode subregs of DFmode registers, and referring to
a 64 bit multiplication result in MACH/MACL as DImode.

The register numbering should be changed so that the registers always appear in
the same endianness as memory, and inasmuch as they only exist because of the
wrong-numbered registers, pattern and register class anomalies removed and CLASS_CANNOT_CHANGE_MODE made to return 0 whenever possible.  This should allow
to make best use of the rtl optimizers.