Printf format strings: Added some more tests and fixed some minor bugs.
- Precision toStrings shouldn't print a dot when they have no value.
- Length of char length modifier is now returned correctly.
- Added several fixit tests.

Note: fixit tests are currently broken due to a bug in HighlightRange. Marking as XFAIL for now.

M    test/Sema/format-strings-fixit.c
M    include/clang/Analysis/Analyses/PrintfFormatString.h
M    lib/Analysis/PrintfFormatString.cpp


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106275 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Analysis/PrintfFormatString.cpp b/lib/Analysis/PrintfFormatString.cpp
index 951be17..8ad1d21 100644
--- a/lib/Analysis/PrintfFormatString.cpp
+++ b/lib/Analysis/PrintfFormatString.cpp
@@ -611,20 +611,21 @@
 //===----------------------------------------------------------------------===//
 
 void OptionalAmount::toString(llvm::raw_ostream &os) const {
-  if (UsesDotPrefix)
-    os << ".";
-
   switch (hs) {
   case Invalid:
   case NotSpecified:
     return;
   case Arg:
+    if (UsesDotPrefix)
+        os << ".";
     if (usesPositionalArg())
       os << "*" << getPositionalArgIndex() << "$";
     else
       os << "*";
     break;
   case Constant:
+    if (UsesDotPrefix)
+        os << ".";
     os << amt;
     break;
   }