On Wednesday 18 February 2009 10:35, Devang Patel wrote:> On Feb 18, 2009, at 8:00 AM, David Greene wrote:
> > 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