http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50127
--- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> 2012-01-06 10:57:15 UTC --- Ok, I can reproduce this now. Compared to 64-bit cc1 the difference starts during the bbpart pass, particularly when partition_hot_cold_basic_blocks invokes df in if (cfun->eh->lp_array). Something in the df rescanning or so goes wrong and finally the DF fast DCE removes setters of two pseudos (114 and 116) that are actually needed. Note the pseudos are set in a hot bb and used in a cold successor bb (there is a direct EDGE_CROSSING edge in between the two).