On Aug 14, 2009, at 2:48 PM, Eli Friedman wrote: > On Fri, Aug 14, 2009 at 1:49 PM, Ted Kremenek<[email protected]> > wrote: >> @@ -431,17 +438,18 @@ >> return; >> } >> >> - if (!isFunctionOrMethod(d)) { >> + if (!isFunction(d)) { >> S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) >> << Attr.getName() << 0 /*function*/; >> return; >> } >> >> - if (FunctionDecl *FD = dyn_cast<FunctionDecl>(d)) { >> - if (!FD->getResultType()->isPointerType()) { >> - S.Diag(Attr.getLoc(), >> diag::warn_attribute_malloc_pointer_only); >> - return; >> - } >> + const FunctionDecl *FD = cast<FunctionDecl>(d); >> + QualType RetTy = FD->getResultType(); >> + >> + if (!(RetTy->isAnyPointerType() || RetTy->isBlockPointerType())) { >> + S.Diag(Attr.getLoc(), diag::warn_attribute_malloc_pointer_only); >> + return; >> } > > I believe we went through this before... isFunction doesn't guarantee > that d is a FunctionDecl.
Right. Please see the follow-up patch. _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
