Index: clang/lib/AST/FormatString.cpp
--- clang/lib/AST/FormatString.cpp.orig
+++ clang/lib/AST/FormatString.cpp
@@ -1203,6 +1203,10 @@ bool FormatSpecifier::hasValidLengthModifier(const Tar
     case ConversionSpecifier::XArg:
     case ConversionSpecifier::nArg:
       return true;
+    case ConversionSpecifier::FreeBSDbArg:
+      return Target.getTriple().isOSFreeBSD() ||
+             Target.getTriple().isPS4() ||
+             Target.getTriple().isOSOpenBSD();
     case ConversionSpecifier::FreeBSDrArg:
     case ConversionSpecifier::FreeBSDyArg:
       return Target.getTriple().isOSFreeBSD() || Target.getTriple().isPS();
@@ -1243,6 +1247,10 @@ bool FormatSpecifier::hasValidLengthModifier(const Tar
     case ConversionSpecifier::ScanListArg:
     case ConversionSpecifier::ZArg:
       return true;
+    case ConversionSpecifier::FreeBSDbArg:
+      return Target.getTriple().isOSFreeBSD() ||
+             Target.getTriple().isPS4() ||
+             Target.getTriple().isOSOpenBSD();
     case ConversionSpecifier::FreeBSDrArg:
     case ConversionSpecifier::FreeBSDyArg:
       return Target.getTriple().isOSFreeBSD() || Target.getTriple().isPS();
@@ -1460,6 +1468,7 @@ bool FormatSpecifier::hasStandardLengthConversionCombi
     case ConversionSpecifier::uArg:
     case ConversionSpecifier::xArg:
     case ConversionSpecifier::XArg:
+    case ConversionSpecifier::FreeBSDbArg:
       return false;
     default:
       return true;
