Unable to build PBQP/Graph.h with libc++

Hi, everyone. Today I was trying to build LLVM with libc++ and C++11 enabled, and I ran into this:

Basically, PBQP/Graph.h forward-declares classes, then tries to get iterators for std::lists of those classes. This is technically undefined behavior. I tried fudging with the order of declarations for a while, but gave up after realizing there's not an easy way out.

Is anyone else building LLVMCodeGen with libc++ and C++11? Is anyone else seeing this?

Thanks,
Jordan

Yeah, I think Lang (author of PBQP) came across this at some point.
We've discussed it & we didn't immediately come up with any great idea
of how to solve it... certainly something that still needs some
thought (& ultimately, a fix ;))

I was hitting this problem a while ago, but it's not reproducible when compiling llvm with clang trunk and libc++ trunk.

- Ben

This is a known issue with the current PBQP data structures. I’m working on an overhaul of the PBQP allocator at the moment which should address this.

  • Lang.

I think I’ve fixed this issue with r166484. Let me know if you run into further problems building PBQP with libc++ and C++11.

  • Lang.

Seems to be working. Thanks, Lang!