[PATCH] D41237: [Frontend] Handle skipped bodies in template instantiations
Ilya Biryukov via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Dec 19 01:57:04 PST 2017
ilya-biryukov added inline comments.
================
Comment at: lib/Sema/SemaDecl.cpp:12184
Decl *Sema::ActOnSkippedFunctionBody(Decl *Decl) {
- if (FunctionDecl *FD = dyn_cast_or_null<FunctionDecl>(Decl))
+ if (FunctionDecl *FD = Decl->getAsFunction())
FD->setHasSkippedBody();
----------------
ilya-biryukov wrote:
> sepavloff wrote:
> > In the case of `Decl == nullptr` this code would crash. Probably it makes sense to check for this condition at the beginning of the function and use `dyn_cast` instead of `dyn_cast_or_null` in the next check.
> >
> Do we have callsites that pass null to this function? I don't see a meaningful semantics for this function if we pass null here.
> I thought that `Decl`s are always passed via pointers by convention, but I may be wrong.
After looking at the callsites, they actually suggest that nulls can be passed. Tried adding an assert and it didn't fire when running `check-all`, though.
But it's better to be on the safe side. Added a check for null, updated the patch accordingly.
Repository:
rC Clang
https://reviews.llvm.org/D41237
More information about the cfe-commits
mailing list