Author: rpaulo
Date: Mon Oct 11 17:18:23 2010
New Revision: 213694
URL: http://svn.freebsd.org/changeset/base/213694

Log:
  Rework the analysis of the 'r' specifier. It turns out that we can't
  make it like xArg because they are different ('x' doesn't accept sign,
  but 'r' does).
  This fixes some warnings when building DDB with clang.
  
  With help from:       rdivacky

Modified:
  head/contrib/llvm/tools/clang/include/clang/Analysis/Analyses/FormatString.h
  head/contrib/llvm/tools/clang/lib/Analysis/FormatString.cpp
  head/contrib/llvm/tools/clang/lib/Analysis/PrintfFormatString.cpp

Modified: 
head/contrib/llvm/tools/clang/include/clang/Analysis/Analyses/FormatString.h
==============================================================================
--- 
head/contrib/llvm/tools/clang/include/clang/Analysis/Analyses/FormatString.h    
    Mon Oct 11 16:57:02 2010        (r213693)
+++ 
head/contrib/llvm/tools/clang/include/clang/Analysis/Analyses/FormatString.h    
    Mon Oct 11 17:18:23 2010        (r213694)
@@ -147,6 +147,7 @@ public:
     // FreeBSD specific specifiers
     bArg,
     DArg,
+    rArg,
     
     // GlibC specific specifiers.
     PrintErrno,   // 'm'

Modified: head/contrib/llvm/tools/clang/lib/Analysis/FormatString.cpp
==============================================================================
--- head/contrib/llvm/tools/clang/lib/Analysis/FormatString.cpp Mon Oct 11 
16:57:02 2010        (r213693)
+++ head/contrib/llvm/tools/clang/lib/Analysis/FormatString.cpp Mon Oct 11 
17:18:23 2010        (r213694)
@@ -423,6 +423,7 @@ bool FormatSpecifier::hasValidLengthModi
         case ConversionSpecifier::xArg:
         case ConversionSpecifier::XArg:
         case ConversionSpecifier::nArg:
+       case ConversionSpecifier::rArg:
           return true;
         default:
           return false;
@@ -448,6 +449,7 @@ bool FormatSpecifier::hasValidLengthModi
         case ConversionSpecifier::nArg:
         case ConversionSpecifier::cArg:
         case ConversionSpecifier::sArg:
+       case ConversionSpecifier::rArg:
           return true;
         default:
           return false;

Modified: head/contrib/llvm/tools/clang/lib/Analysis/PrintfFormatString.cpp
==============================================================================
--- head/contrib/llvm/tools/clang/lib/Analysis/PrintfFormatString.cpp   Mon Oct 
11 16:57:02 2010        (r213693)
+++ head/contrib/llvm/tools/clang/lib/Analysis/PrintfFormatString.cpp   Mon Oct 
11 17:18:23 2010        (r213694)
@@ -195,7 +195,7 @@ static PrintfSpecifierResult ParsePrintf
     case 'm': k = ConversionSpecifier::PrintErrno; break;
     // FreeBSD format extensions
     case 'b': if (FormatExtensions) k = ConversionSpecifier::bArg; break; /* 
check for int and then char * */
-    case 'r': if (FormatExtensions) k = ConversionSpecifier::xArg; break;
+    case 'r': if (FormatExtensions) k = ConversionSpecifier::rArg; break;
     case 'y': if (FormatExtensions) k = ConversionSpecifier::iArg; break;
     case 'D': if (FormatExtensions) k = ConversionSpecifier::DArg; break; /* 
check for u_char * pointer and a char * string */
   }
@@ -279,6 +279,7 @@ const char *ConversionSpecifier::toStrin
   // FreeBSD specific specifiers.
   case bArg: return "b";
   case DArg: return "D";
+  case rArg: return "r";
 
   // GlibC specific specifiers.
   case PrintErrno: return "m";
@@ -491,6 +492,7 @@ bool PrintfSpecifier::hasValidPlusPrefix
   case ConversionSpecifier::GArg:
   case ConversionSpecifier::aArg:
   case ConversionSpecifier::AArg:
+  case ConversionSpecifier::rArg:
     return true;
 
   default:
@@ -514,6 +516,7 @@ bool PrintfSpecifier::hasValidAlternativ
   case ConversionSpecifier::FArg:
   case ConversionSpecifier::gArg:
   case ConversionSpecifier::GArg:
+  case ConversionSpecifier::rArg:
     return true;
 
   default:
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to