From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23051 invoked by alias); 23 Nov 2006 20:14:03 -0000 Received: (qmail 23004 invoked by uid 48); 23 Nov 2006 20:13:51 -0000 Date: Thu, 23 Nov 2006 20:14:00 -0000 Subject: [Bug target/29961] New: SH port uses big-endian specific register numbers X-Bugzilla-Reason: CC Message-ID: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "amylaar at gcc dot gnu dot org" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2006-11/txt/msg02050.txt.bz2 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. -- Summary: SH port uses big-endian specific register numbers Product: gcc Version: 4.3.0 Status: UNCONFIRMED Keywords: missed-optimization 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-*-* BugsThisDependsOn: 29842 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29961