[Bug rtl-optimization/24762] [killloop-branch] code motion of non-invariant expressions with hard registers.

dberlin at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Wed Nov 9 22:53:00 GMT 2005



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



More information about the Gcc-bugs mailing list