[cfe-commits] r94713 - in /cfe/trunk: include/clang/Analysis/Analyses/PrintfFormatString.h lib/Analysis/PrintfFormatString.cpp

Ted Kremenek kremenek at apple.com
Wed Jan 27 16:55:28 PST 2010


Author: kremenek
Date: Wed Jan 27 18:55:28 2010
New Revision: 94713

URL: http://llvm.org/viewvc/llvm-project?rev=94713&view=rev
Log:
Add '@' conversion specifier.

Modified:
    cfe/trunk/include/clang/Analysis/Analyses/PrintfFormatString.h
    cfe/trunk/lib/Analysis/PrintfFormatString.cpp

Modified: cfe/trunk/include/clang/Analysis/Analyses/PrintfFormatString.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Analysis/Analyses/PrintfFormatString.h?rev=94713&r1=94712&r2=94713&view=diff

==============================================================================
--- cfe/trunk/include/clang/Analysis/Analyses/PrintfFormatString.h (original)
+++ cfe/trunk/include/clang/Analysis/Analyses/PrintfFormatString.h Wed Jan 27 18:55:28 2010
@@ -24,6 +24,7 @@
 public:
   enum Kind {
    InvalidSpecifier = 0,
+    // C99 conversion specifiers.
    dArg, // 'd'
    iArg, // 'i',
    oArg, // 'o',
@@ -43,12 +44,19 @@
    VoidPtrArg,    // 'p'
    OutIntPtrArg,  // 'n'
    PercentArg,    // '%'
+    // Objective-C specific specifiers.
+   ObjCObjArg,    // '@'
+    // Specifier ranges.
    IntArgBeg = dArg,
    IntArgEnd = iArg,
    UIntArgBeg = oArg,
    UIntArgEnd = XArg,
    DoubleArgBeg = fArg,
-   DoubleArgEnd = AArg
+   DoubleArgEnd = AArg,
+   C99Beg = IntArgBeg,
+   C99End = DoubleArgEnd,
+   ObjCBeg = ObjCObjArg,
+   ObjCEnd = ObjCObjArg
   };
 
   ConversionSpecifier(Kind k) : kind(k) {}

Modified: cfe/trunk/lib/Analysis/PrintfFormatString.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Analysis/PrintfFormatString.cpp?rev=94713&r1=94712&r2=94713&view=diff

==============================================================================
--- cfe/trunk/lib/Analysis/PrintfFormatString.cpp (original)
+++ cfe/trunk/lib/Analysis/PrintfFormatString.cpp Wed Jan 27 18:55:28 2010
@@ -193,9 +193,8 @@
   switch (*I) {
     default:
       H.HandleInvalidConversionSpecifier(I);
-      return true;
-      
-    // Handle the cases we know about.
+      return true;      
+    // C99: 7.19.6.1 (section 8).
     case 'd': cs = ConversionSpecifier::dArg; break;
     case 'i': cs = ConversionSpecifier::iArg; break;
     case 'o': cs = ConversionSpecifier::oArg; break;
@@ -214,7 +213,9 @@
     case 's': cs = ConversionSpecifier::CStrArg;      break;
     case 'p': cs = ConversionSpecifier::VoidPtrArg;   break;
     case 'n': cs = ConversionSpecifier::OutIntPtrArg; break;
-    case '%': cs = ConversionSpecifier::PercentArg;   break;
+    case '%': cs = ConversionSpecifier::PercentArg;   break;      
+    // Objective-C.
+    case '@': cs = ConversionSpecifier::ObjCObjArg; break;      
   }
   FS.setConversionSpecifier(cs);
   return FormatSpecifierResult(Start, FS);





More information about the cfe-commits mailing list