------- 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