diff options
author | Ted Kremenek <kremenek@apple.com> | 2012-01-20 21:40:12 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2012-01-20 21:40:12 +0000 |
commit | 18932a0f2a94a7813ec461d1118c39ecf8aa936f (patch) | |
tree | 2b86159a44858013b84db454384d4f9900444fc8 | |
parent | 3eaaa99c7ee85300e2c55dcc2103ebeae19f4d11 (diff) |
Add ability to specifiy 'restrict' on parameters of builtins, and correct this oversight for scanf functions.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148573 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/clang/AST/Type.h | 8 | ||||
-rw-r--r-- | include/clang/Basic/Builtins.def | 12 | ||||
-rw-r--r-- | lib/AST/ASTContext.cpp | 3 |
3 files changed, 17 insertions, 6 deletions
diff --git a/include/clang/AST/Type.h b/include/clang/AST/Type.h index ed2e83763f..a026961b20 100644 --- a/include/clang/AST/Type.h +++ b/include/clang/AST/Type.h @@ -639,6 +639,14 @@ public: QualType withVolatile() const { return withFastQualifiers(Qualifiers::Volatile); } + + /// Add the restrict qualifier to this QualType. + void addRestrict() { + addFastQualifiers(Qualifiers::Restrict); + } + QualType withRestrict() const { + return withFastQualifiers(Qualifiers::Restrict); + } QualType withCVRQualifiers(unsigned CVR) const { return withFastQualifiers(CVR); diff --git a/include/clang/Basic/Builtins.def b/include/clang/Basic/Builtins.def index 0a16f9eb02..3ceb687b03 100644 --- a/include/clang/Basic/Builtins.def +++ b/include/clang/Basic/Builtins.def @@ -662,12 +662,12 @@ LIBBUILTIN(vprintf, "icC*a", "fP:0:", "stdio.h", ALL_LANGUAGES) LIBBUILTIN(vfprintf, "i.", "fP:1:", "stdio.h", ALL_LANGUAGES) LIBBUILTIN(vsnprintf, "ic*zcC*a", "fP:2:", "stdio.h", ALL_LANGUAGES) LIBBUILTIN(vsprintf, "ic*cC*a", "fP:1:", "stdio.h", ALL_LANGUAGES) -LIBBUILTIN(scanf, "icC*.", "fs:0:", "stdio.h", ALL_LANGUAGES) -LIBBUILTIN(fscanf, "iP*cC*.", "fs:1:", "stdio.h", ALL_LANGUAGES) -LIBBUILTIN(sscanf, "icC*cC*.", "fs:1:", "stdio.h", ALL_LANGUAGES) -LIBBUILTIN(vscanf, "icC*a", "fS:0:", "stdio.h", ALL_LANGUAGES) -LIBBUILTIN(vfscanf, "iP*cC*a", "fS:1:", "stdio.h", ALL_LANGUAGES) -LIBBUILTIN(vsscanf, "icC*cC*a", "fS:1:", "stdio.h", ALL_LANGUAGES) +LIBBUILTIN(scanf, "icC*R.", "fs:0:", "stdio.h", ALL_LANGUAGES) +LIBBUILTIN(fscanf, "iP*RcC*R.", "fs:1:", "stdio.h", ALL_LANGUAGES) +LIBBUILTIN(sscanf, "icC*RcC*R.", "fs:1:", "stdio.h", ALL_LANGUAGES) +LIBBUILTIN(vscanf, "icC*Ra", "fS:0:", "stdio.h", ALL_LANGUAGES) +LIBBUILTIN(vfscanf, "iP*RcC*Ra", "fS:1:", "stdio.h", ALL_LANGUAGES) +LIBBUILTIN(vsscanf, "icC*RcC*Ra", "fS:1:", "stdio.h", ALL_LANGUAGES) // C99 LIBBUILTIN(longjmp, "vJi", "fr", "setjmp.h", ALL_LANGUAGES) diff --git a/lib/AST/ASTContext.cpp b/lib/AST/ASTContext.cpp index 476d221fdf..27bbc72e88 100644 --- a/lib/AST/ASTContext.cpp +++ b/lib/AST/ASTContext.cpp @@ -6468,6 +6468,9 @@ static QualType DecodeTypeFromStr(const char *&Str, const ASTContext &Context, case 'D': Type = Context.getVolatileType(Type); break; + case 'R': + Type = Type.withRestrict(); + break; } } |