aaron.ballman accepted this revision.
aaron.ballman added a comment.
This revision is now accepted and ready to land.

LGTM!


================
Comment at: lib/Sema/SemaDecl.cpp:5374
@@ +5373,3 @@
+
+  // Virtual functions cannot be marked as 'notail'.
+  if (auto *Attr = ND.getAttr<NotTailCalledAttr>())
----------------
ahatanak wrote:
> aaron.ballman wrote:
> > I am not home yet, and so I don't have the source code to try this out, but 
> > I have a sneaking suspicion there's a way to tell whether a function is an 
> > override. IIRC, it's something like overridden_methods() on a CXXMethodDecl.
> > 
> > I will do some poking when I am back in front of the source. Otherwise, I 
> > would guess you can look at some of the diagnostics in 
> > DiagnosticSemaKinds.td for the override keyword itself, because I bet we 
> > warn when you specify override on something that isn't a virtual function 
> > override, and that should have a code example.
> It's possible to tell a method is a virtual function if either an overridden 
> method is added to its declaration (which will cause isVirtual() to return 
> true) or an OverrideAttr attribute is added. Currently, processDeclAttributes 
> is called before these methods or attributes are added, and that is why I 
> think it isn't possible to tell if the method is virtual when the attributes 
> are being checked.
Ugh, that is really unfortunate, but I think you're right. At some point, we 
may have to find a way to handle this, but I don't think that should hold up 
your patch.


http://reviews.llvm.org/D12922



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to