http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56756
--- Comment #9 from Richard Biener <rguenth at gcc dot gnu.org> 2013-03-28 12:42:17 UTC --- Created attachment 29744 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=29744 patch This patch makes us not rely on a dominator walk to magically get us process stmts in the correct order but instead uses the dependences we record for each stmt to make sure we moved them before uses. And fixes things to actually record all dependences (translating stmt to bb dependencies before that walk may speed up things for some testcases, processing in a good order from the start can avoid the recursion - processing stmts rather than BBs with a worklist is another possibility - we should be able to "drain" the depends vector into the worklist).