ahatanak added inline comments.
================ Comment at: clang/include/clang/Basic/AttrDocs.td:4087-4088 -Marking virtual functions as ``not_tail_called`` is an error: +Marking virtual functions as ``not_tail_called`` will not have effect on the +overriding functions of derived classes: ---------------- Quuxplusone wrote: > aaron.ballman wrote: > > > /will not have effect/will have no effect/ > However, this phrasing is easy to interpret the wrong way around: actually > marking a (base-class) virtual function //will// affect overriding functions > in derived classes! You meant that marking the //overrider// wouldn't > retroactively affect the //overridden// function from the base class. > I think the correct explanation would be more like this: > > Generally, marking an overriding virtual function as ``not_tail_called`` > is > not useful, because this attribute is a property of the static type. Calls > made through a pointer or reference to the base class type will respect > the ``no_tail_called`` attribute of the base class's member function, > regardless of the runtime destination of the call. > > I think it'd also be correct and helpful to add: > > Similarly, calls made through a function pointer will respect the > ``no_tail_called`` attribute of the function pointer, not of its > runtime destination. > > (I admit this is mildly redundant with the `foo2` example above.) > calls made through a function pointer will respect the ``no_tail_called`` > attribute of the function pointer But function pointers currently can't be annotated with `no_tail_called`, right? Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D96832/new/ https://reviews.llvm.org/D96832 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits