------- Additional Comments From ebotcazou at gcc dot gnu dot org 2004-12-02 07:11 ------- This one is really tricky to fix: this is the classical case in which the return value register's liveness propagates backwards until an unrelated use/clobber of the register is encountered. This works more or less until the regrename pass, which locally renames the register in the latter def/use/clobber chain; so the return value register's liveness is not masked anymore and propagates back to the start of the basic block. But, after reload, register liveness information is not allowed to change at basic block boundaries so the compiler aborts on a sanity check.
The easy workaround is to make sure that every code path in a function returning a value really returns a value. -- What |Removed |Added ---------------------------------------------------------------------------- CC| |ebotcazou at gcc dot gnu dot | |org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16586