]> granicus.if.org Git - clang/commitdiff
Add attribute "format" support for typedefs of function pointers.
authorTed Kremenek <kremenek@apple.com>
Fri, 9 May 2008 17:36:24 +0000 (17:36 +0000)
committerTed Kremenek <kremenek@apple.com>
Fri, 9 May 2008 17:36:24 +0000 (17:36 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50906 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaDecl.cpp
test/Sema/format-attribute.c

index 748b66fb3e1bdf4ded8ad8e8f7caa730b5962003..afe877fb97e5904beee9ac4da31d4ad9e303b5ca 100644 (file)
@@ -2338,6 +2338,8 @@ static const FunctionTypeProto *getFunctionProto(Decl *d) {
     Ty = decl->getType();
   else if (FieldDecl *decl = dyn_cast<FieldDecl>(d))
     Ty = decl->getType();
+  else if (TypedefDecl* decl = dyn_cast<TypedefDecl>(d))
+    Ty = decl->getUnderlyingType();
   else
     return 0;
 
index 8eefe3f0654461142f4bd7b0975933495b3d48ed..ecdef9dde1a3714b3bee86691c7c4d8e0473bfd3 100644 (file)
@@ -22,3 +22,5 @@ struct _mystruct {
   int (*printf)(const char *format, ...) __attribute__((__format__(printf, 1, 2))); // no-error
   int (*printf2)(double format, ...) __attribute__((__format__(printf, 1, 2))); // expected-error {{format argument not a string type}}
 };
+
+typedef int (*f3_ptr)(char*,...) __attribute__((format(printf,1,0))); // no-error