Szelethus added a comment. Exquisite detective work as always! I read a bit of the standard, your summary, the bugreport and the new test cases, and I feel confident that I have a good understanding of the problem and your solution, though I didn't dig through the details just yet. At a first glance this looks great, and I'll be sure to revisit this patch and accept it formally.
> The //expression-list// or //braced-init-list// in a //mem-initializer// is > used to initialize the designated subobject (or, in the case of a delegating > constructor, the complete class object) according to the initialization rules > of 11.6 for direct-initialization. [ //Example:// > > struct B1 { B1(int) ; /* . . . */ }; > struct B2 { B2(int) ; /* . . . */ }; > struct D : B1, B2 { > D(int) ; > B1 b; > const int c; > }; > D: : D(int a) : B2(a+1) , B1(a+2) , c(a+3) , b(a+4) { /* . . . */ } > D d(10) ; > > //— end example// ] [ //Note:// The initialization performed by each > //mem-initializer// constitutes a full-expression (4.6) . Any expression in a > //mem-initializer// is evaluated as part of the full-expression that performs > the initialization. //— end note// ] **A //mem-initializer// where the > //mem-initializer-id// denotes a virtual base class is ignored during > execution of a constructor of any class that is not the most derived class.** I think this part of the standard isn't well known (due mostly the the scarcity of virtual bases), and I'd like to see it referenced, maybe even quoted. ================ Comment at: clang/include/clang/Analysis/CFG.h:567 +/// &&, || | expression that uses result of && or ||, RHS +/// vbase inits | handled by superclass; not handled by superclass /// ---------------- In the context of this patch, I understand what you mean, but without that, this might not be a good description for a class this important. How about ``` /// vbase inits | initialization handled by superclass; /// | initialization not handled by superclass ``` ? CHANGES SINCE LAST ACTION https://reviews.llvm.org/D61816/new/ https://reviews.llvm.org/D61816 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits