aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2008-05-09 17:36:24 +0000
committerTed Kremenek <kremenek@apple.com>2008-05-09 17:36:24 +0000
commit72786e009bd0519882ceac874e618134d2200d95 (patch)
treefbc1be587162aaf7925757704f64abcc51023bf6
parent5eaedc5bdbbaea4ef68f2c9d0824c1b1794b7091 (diff)
Add attribute "format" support for typedefs of function pointers.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50906 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Sema/SemaDecl.cpp2
-rw-r--r--test/Sema/format-attribute.c2
2 files changed, 4 insertions, 0 deletions
diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp
index 748b66fb3e..afe877fb97 100644
--- a/lib/Sema/SemaDecl.cpp
+++ b/lib/Sema/SemaDecl.cpp
@@ -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;
diff --git a/test/Sema/format-attribute.c b/test/Sema/format-attribute.c
index 8eefe3f065..ecdef9dde1 100644
--- a/test/Sema/format-attribute.c
+++ b/test/Sema/format-attribute.c
@@ -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