This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/22537] [4.0 Regression] unable to find a register to spill in class "CREG"
- From: "pinskia at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 21 Jul 2005 05:33:35 -0000
- Subject: [Bug target/22537] [4.0 Regression] unable to find a register to spill in class "CREG"
- References: <20050717221421.22537.mueller@kde.org>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Additional Comments From pinskia at gcc dot gnu dot org 2005-07-21 05:33 -------
Confirmed, the reduced even extra options on the mainline to disable to get the same tree output from
the mainline, the ICE is not reproducible there.
Reduced testcase:
struct nand_chip {
int page_shift;
int phys_erase_shift;
};
void foo( int );
void nand_writev_ecc (struct nand_chip *this, unsigned i, unsigned count)
{
int a = (this->phys_erase_shift - this->page_shift);
int ppblock = (1 << a);
for (i = 0; i < count; i++) ;
foo (ppblock);
}
Note on the mainline removes the loop unless you use -fno-tree-optimize. We also move the 1<<a
below the loop unless you use -fno-tree-sink on the mainline. With those two options we get the same
tree dump before expand.
To reproduce this on the 4.0 branch just use "-Os -march=k6 -mregparm=3".
--
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Ever Confirmed| |1
Known to fail| |4.0.0
Known to work| |3.4.0 4.1.0
Last reconfirmed|0000-00-00 00:00:00 |2005-07-21 05:33:34
date| |
Summary|unable to find a register to|[4.0 Regression] unable to
|spill in class "CREG" |find a register to spill in
| |class "CREG"
Target Milestone|--- |4.0.2
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22537