------- Comment #6 from dberlin at gcc dot gnu dot org 2005-11-09 22:53 ------- 1. Call clobbers aren't definitions. They are clobbers (IE kills). They do not generate a new value, they simply specify the old value is dead. Thus, you don't mean to say "df.c assumes call clobbers ...", because it's not an assumption.
2. The patch is actually an incorrect workaround. The real problem is that df.c on mainline doesn't get reaching definitions right for a number of reasons. For example, explicit clobbers in CALL_INSN_FUNCTION_USAGE but *not* in regs_invalidated_by_call will be treated as gen's, because they don't fall into the special case in df_bb_rd_local_compute. But they are not gen's. Have you tried making sure CLOBBER's don't get into the rd_gen set? I imagine that will fix your bug. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24762