Add support for format string checking of object-size checking
versions of sprintf and friends.
 - Added FIXME that this mechanism should be generalized.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56962 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/Sema.cpp b/lib/Sema/Sema.cpp
index f43264d..80ce2cc 100644
--- a/lib/Sema/Sema.cpp
+++ b/lib/Sema/Sema.cpp
@@ -88,17 +88,22 @@
   // do extra checking.  
   IdentifierTable &IT = PP.getIdentifierTable();  
 
-  KnownFunctionIDs[id_printf]    = &IT.get("printf");
-  KnownFunctionIDs[id_fprintf]   = &IT.get("fprintf");
-  KnownFunctionIDs[id_sprintf]   = &IT.get("sprintf");
-  KnownFunctionIDs[id_snprintf]  = &IT.get("snprintf");
-  KnownFunctionIDs[id_asprintf]  = &IT.get("asprintf");
-  KnownFunctionIDs[id_NSLog]     = &IT.get("NSLog");
-  KnownFunctionIDs[id_vsnprintf] = &IT.get("vsnprintf");
-  KnownFunctionIDs[id_vasprintf] = &IT.get("vasprintf");
-  KnownFunctionIDs[id_vfprintf]  = &IT.get("vfprintf");
-  KnownFunctionIDs[id_vsprintf]  = &IT.get("vsprintf");
-  KnownFunctionIDs[id_vprintf]   = &IT.get("vprintf");
+  KnownFunctionIDs[id_printf]        = &IT.get("printf");
+  KnownFunctionIDs[id_fprintf]       = &IT.get("fprintf");
+  KnownFunctionIDs[id_sprintf]       = &IT.get("sprintf");
+  KnownFunctionIDs[id_sprintf_chk]   = &IT.get("__builtin___sprintf_chk");
+  KnownFunctionIDs[id_snprintf]      = &IT.get("snprintf");
+  KnownFunctionIDs[id_snprintf_chk]  = &IT.get("__builtin___snprintf_chk");
+  KnownFunctionIDs[id_asprintf]      = &IT.get("asprintf");
+  KnownFunctionIDs[id_NSLog]         = &IT.get("NSLog");
+  KnownFunctionIDs[id_vsnprintf]     = &IT.get("vsnprintf");
+  KnownFunctionIDs[id_vasprintf]     = &IT.get("vasprintf");
+  KnownFunctionIDs[id_vfprintf]      = &IT.get("vfprintf");
+  KnownFunctionIDs[id_vsprintf]      = &IT.get("vsprintf");
+  KnownFunctionIDs[id_vsprintf_chk]  = &IT.get("__builtin___vsprintf_chk");
+  KnownFunctionIDs[id_vsnprintf]     = &IT.get("vsnprintf");
+  KnownFunctionIDs[id_vsnprintf_chk] = &IT.get("__builtin___vsnprintf_chk");
+  KnownFunctionIDs[id_vprintf]       = &IT.get("vprintf");
 
   SuperID = &IT.get("super");