------- Comment #1 from bonzini at gnu dot org 2007-03-15 17:03 ------- Created an attachment (id=13211) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=13211&action=view) patch that fixes the bug, untested
REG_N_CALLS_CROSSED is computed using live, not urec. caller_save uses it to decide what to save (in advance), and urec to decide whether to save something (while scanning the insns). reg 58 is not in live but it is in urec. So, caller_save thinks that reg 58 doesn't have to be saved (using live) and yet it tries to save it (using urec). -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31025