regclass change causing Sparc problems
David S. Miller
davem@redhat.com
Fri Dec 17 04:42:00 GMT 1999
The following recent change:
Thu Dec 16 11:33:57 MET 1999 Jan Hubicka <hubicka@freesoft.cz>
* regclass.c (loop_depth): Remove
(scan_one_insn): Do not handle LOOP_NOTE insns.
(regclass): Go through basic blocks and set loop_cost
What basic blocks? Basic block information is always available
right? Currently this is wrong...
This breaks Sparc (and probably many other platforms) because now if
"n_basic_blocks" is zero then none of the insns get scanned to
determine class preferencing!
(Easily seen by gcc.c-torture compile/980504-1.c on Sparc with -O0,
the example causes stupid register allocation to create something
like "(set (reg) (mem (reg %f7)))" because the regclass information
is hosed and stupid believes it can use FPU registers for address
computations :-)
find_basic_blocks does not run if obey_regdecls (ie. non-optimized
compiles) so depending upon basic block information for correct
operation in regclass is incorrect.
Later,
David S. Miller
davem@redhat.com
More information about the Gcc-bugs
mailing list