void funky(Base* b) { BaseVTableLayout const* vptr = b->vptr; inlinable(b); // statement A b->vptr = vptr; // inform LLVM that the function is not allowed to change the virtual pointer under our feet opaque(b); // Unknown implementation, LLVM assumes it may change the virtual pointer b->vptr = vptr; // inform LLVM that the function is not allowed to change the virtual pointer under our feet inlinable(b); // statement B b->vptr = vptr; // inform LLVM that the function is not allowed to change the virtual pointer under our feet }
void not_inlinable () { inlinable(); }