http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51915
--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> 2012-01-20 13:16:42 UTC --- Created attachment 26394 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=26394 gcc47-pr51915.patch Untested fix. output_move_double (sometimes intentionally) modifies the operands array, because it returns a pattern that should be emitted by the caller in some cases. But if that is done already when !emit, when just counting the insns, when output_move_double is called with emit=true, we ICE.