On Nov 8, 2007, at 2:20 PM, Owen Anderson wrote: > Author: resistor > Date: Thu Nov 8 16:20:23 2007 > New Revision: 43910 > > URL: http://llvm.org/viewvc/llvm-project?rev=43910&view=rev > Log: > Make BreakCriticalMachineEdges available as a pass that can be > depended on.
Hey Owen, Here's a really important case that is non-obvious: consider: switch ... [1, BB1] [2, BB1] [3, BB1] ... BB1: X = phi [switchblock, x] [switchblock, x] [switchblock, x] [otherblock, y] All three edges between switchblock and BB1 are critical, yet it is critially (haha) important that they be split as: switch ... [1, NewBB] [2, NewBB] [3, NewBB] ... NewBB: br BB1 BB1: X = phi [BB1, x] [otherblock, y] Note that in this case, the edges are still critical after the xform... fun huh? :) Also, I second Evan's concern about this being a pass. It seems like it should be a function that passes can call when they need to. For StrongPHI elim for example, it only really needs to split critical edges to blocks that have phi's in them, right? -Chris _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits