================ @@ -32,3 +38,16 @@ CompleteC cc; // CIR: cir.global external @cc = #cir.zero : !rec_CompleteC // LLVM: @cc = global %class.CompleteC zeroinitializer // OGCG: @cc = global %class.CompleteC zeroinitializer + +class Base { +public: + int a; +}; + +class Derived : public Base { +public: + int b; +}; + +int use(Derived *d) { return d->b; } ---------------- erichkeane wrote:
Can we get a CRTP test as well? Something like: ``` template<typename Derived> struct CRTP { Derived *otherDerived /* initializer left out, but add something to make sure this isn't ub */; void callThing() { static_cast<Derived>(*this)->thing(); otherDerived->thing(); } }; struct D : CRTP<D> { void thing(){} }; void use( D&d) { d.callThing(); } ``` I suspect it'll work fine, but its awkward enough with this sorta thing that it might be demonstrative. https://github.com/llvm/llvm-project/pull/142823 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits