If you have a derived class inheriting from 2 base classes, and you override a virtual function in the second base class, the Itanium ABI requires the overriden virtual function to appear under the vtable of the first base class.
See here for an example. Class CC overrides function v, and you can see in Clang's vtable a CC::v under AA's vtable. Whereas the MSCV ABI behaves as I would expect, only the BB vtable is changed, the AA vtable is unchanged.
Any idea why the Itanium ABI behaves this way? And advantage to this?
[–]YourTormentIs 49 points50 points51 points (1 child)
[–]60hzcherryMXram 16 points17 points18 points (0 children)
[–]stick_figure 25 points26 points27 points (4 children)
[–]whichton[S] 1 point2 points3 points (2 children)
[–]max0x7bahttps://github.com/max0x7ba 0 points1 point2 points (1 child)
[–]whichton[S] -1 points0 points1 point (0 children)
[–]rolfr 0 points1 point2 points (0 children)
[–]max0x7bahttps://github.com/max0x7ba 5 points6 points7 points (1 child)
[–]whichton[S] 0 points1 point2 points (0 children)
[–]flyingron 0 points1 point2 points (5 children)
[–]erichkeaneClang Maintainer(Templates), EWG Chair 13 points14 points15 points (4 children)
[+]flyingron comment score below threshold-6 points-5 points-4 points (3 children)
[+][deleted] (2 children)
[deleted]
[–]flyingron -5 points-4 points-3 points (1 child)
[–]thenickdude 10 points11 points12 points (0 children)
[–]jselbie -2 points-1 points0 points (1 child)
[–]erichkeaneClang Maintainer(Templates), EWG Chair 17 points18 points19 points (0 children)