There's no point constructing a dominator tree or similar on known-broken IR. Generally, functions should be able to assume that IR is valid (i.e., passes the verifier). Users of this "feature" were: - Verifier, fixed by verifying existence of terminators first. - FuzzMutate, worked around by temporarily inserting terminators. - OpenMP to run analyses while building the IR, worked around by temporarily inserting terminators. - Polly to work with an empty dominator tree, fixed by temporarily adding an unreachable inst. - MergeBlockIntoPredecessor, inadvertently, fixed by adding terminator before updating MemorySSA. - Some sloppily written unit tests.
21 KiB
21 KiB