Details
- Reviewers
mclow.lists
Diff Detail
- Repository
- rL LLVM
Event Timeline
Friendly ping.
The diff is big, but all the changes are mechanical: all I did was move __block_size calculation inside method bodies to avoid evaluating it during class instantiation.
On a second thought, does this change break ABI stability?
I really don't understand what could break though, seeing that the change is header-only and does not affect libc++.so at all.
On a third thought, it does break ABI stability. We've got
sizeof(element) baked into deque::iterator mangled name! Does it mean
we are doomed and there is no way to achieve this?
Ooohh... Your right. It does seem to change the mangled name of std::deque::iterator. libc++ needs to quickly figure out how we want to manage ABI changes. I'll bring this up with @mclow.lists at the end of next week.
I don't want to close this, but we're not going to apply it anytime soon, either.
[ Due to the ABI breakage ]
It looks like the right solution for this problem is starting a __2 namespace and duplicating the whole deque header there (because the changes are so pervasive). How does that sound? I'd like to work on that. Any advice would be much appreciated.
I put together a different possible approach at http://reviews.llvm.org/D10677. The idea is to keep the old and new ABI versions as similar as possible, by filling in the last template argument of the iterator type with 0 in the new ABI. That template parameter becomes (essentially) meaningless, and both the old and new ABI use a different mechanism to get the block size when they need it.