------- Comment #3 from abel at gcc dot gnu dot org 2010-04-20 08:36 ------- The problem is in the remove_insns_that_need_bookkeeping function, which should filter out all instructions that cannot be copied but yet may require bookkeeping. An instruction with asm operands is an example of those insns. In the function, we use dominated_by_p to check that the target block dominates the source block of the instruction, but the answer we get is wrong as the dominance information is broken at this point, and that is because we do not maintain it.
We need to devise a patch to update the dominance information in the scheduler using the dominator infrastructure or to stop using it altogether and to rewrite the function in question. The former requires some effort as my first attempt at this failed, the latter will likely lead to performance regressions. I will work further on keeping dominance info up to date. However, the resulting patch will probably be unsuitable for a release branch. That said, the copy_rtx calls should be fixed nevertheless, but currently it should not matter for the instructions we really want to clone. That may change of course. -- abel at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at gcc dot gnu |abel at gcc dot gnu dot org |dot org | Status|NEW |ASSIGNED Last reconfirmed|2010-04-04 01:34:03 |2010-04-20 08:36:09 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43603