LLVM 2.4 Dominance Frontier Problem

I just finished upgrading our LLVM to 2.4 and I immediately ran into a problem
with dominance frontier calculation:

llvm/lib/VMCore/PassManager.cpp:714: void
llvm::PMDataManager::verifyDomInfo(llvm::Pass&, llvm::Function&): Assertion
`0 && "Invalid dominator info"' failed.

Strangely enough, the Pass running when the assert triggers is Dominance
Frontier Construction.

This is somewhat puzzling. Any idea where to start looking?

                                         -Dave

The PassManager must have printed dominator diffs. before this assertion. Go and fix the last pass that mainpulated dominator info or file a PR with reproducible test case for mainline. IIRC, dom info verifier is not enabled by default.

> I just finished upgrading our LLVM to 2.4 and I immediately ran into
> a problem
> with dominance frontier calculation:
>
> llvm/lib/VMCore/PassManager.cpp:714: void
> llvm::PMDataManager::verifyDomInfo(llvm::Pass&, llvm::Function&):
> Assertion
> `0 && "Invalid dominator info"' failed.
>
> Strangely enough, the Pass running when the assert triggers is
> Dominance
> Frontier Construction.
>
> This is somewhat puzzling. Any idea where to start looking?

The PassManager must have printed dominator diffs. before this
assertion.

Yes, it did. There are no diffs.

Go and fix the last pass that mainpulated dominator info or
file a PR with reproducible test case for mainline. IIRC, dom info
verifier is not enabled by default.

No, it's not and it looks like that was the problem.

This looks like it's another misuse of C++. When I turn on
--enable-expensive-checks, things blow up all over the place. There's an
increment of a singular iterator in CominanceFrontierBase::compare.

I fixed this issue and that solved the problem on my current testcase.

We really need to start testing with --enable-expensive-checks. After
finishing up the details of our merge, I'm going to go polish the validator
some more.

                                                 -Dave

Go and fix the last pass that mainpulated dominator info or
file a PR with reproducible test case for mainline. IIRC, dom info
verifier is not enabled by default.

No, it's not and it looks like that was the problem.

This looks like it's another misuse of C++. When I turn on
--enable-expensive-checks, things blow up all over the place. There's an
increment of a singular iterator in CominanceFrontierBase::compare.

I fixed this issue and that solved the problem on my current testcase.

Great! Pl. apply the fix to mainline also.

We really need to start testing with --enable-expensive-checks. After
finishing up the details of our merge, I'm going to go polish the validator
some more.

Thanks!