diff --git a/lib/Sema/Sema.h b/lib/Sema/Sema.h
index 4fbc42c..fb3ca1c 100644
--- a/lib/Sema/Sema.h
+++ b/lib/Sema/Sema.h
@@ -4047,6 +4047,13 @@
   bool SemaCheckStringLiteral(const Expr *E, const CallExpr *TheCall,
                               bool HasVAListArg, unsigned format_idx,
                               unsigned firstDataArg);
+  // FIXME: This function is placeholder for transitioning the printf
+  //  format string checking to a new codepath.  It will eventually
+  //  replace CheckPrintfString().
+  void AlternateCheckPrintfString(const StringLiteral *FExpr,
+                                  const Expr *OrigFormatExpr,
+                                  const CallExpr *TheCall, bool HasVAListArg,
+                                  unsigned format_idx, unsigned firstDataArg);  
   void CheckPrintfString(const StringLiteral *FExpr, const Expr *OrigFormatExpr,
                          const CallExpr *TheCall, bool HasVAListArg,
                          unsigned format_idx, unsigned firstDataArg);
diff --git a/lib/Sema/SemaChecking.cpp b/lib/Sema/SemaChecking.cpp
index 9305ff7..2a5136e 100644
--- a/lib/Sema/SemaChecking.cpp
+++ b/lib/Sema/SemaChecking.cpp
@@ -1036,6 +1036,14 @@
                              const Expr *OrigFormatExpr,
                              const CallExpr *TheCall, bool HasVAListArg,
                              unsigned format_idx, unsigned firstDataArg) {
+    
+  static bool UseAlternatePrintfChecking = false;
+  if (UseAlternatePrintfChecking) {
+    AlternateCheckPrintfString(FExpr, OrigFormatExpr, TheCall,
+                               HasVAListArg, format_idx, firstDataArg);
+    return;
+  }    
+  
 
   const ObjCStringLiteral *ObjCFExpr =
     dyn_cast<ObjCStringLiteral>(OrigFormatExpr);
@@ -1059,7 +1067,7 @@
       << OrigFormatExpr->getSourceRange();
     return;
   }
-
+  
   // We process the format string using a binary state machine.  The
   // current state is stored in CurrentState.
   enum {
@@ -1271,6 +1279,15 @@
   }
 }
 
+void
+Sema::AlternateCheckPrintfString(const StringLiteral *FExpr,
+                                 const Expr *OrigFormatExpr,
+                                 const CallExpr *TheCall, bool HasVAListArg,
+                                 unsigned format_idx, unsigned firstDataArg) {
+  
+  
+}
+
 //===--- CHECK: Return Address of Stack Variable --------------------------===//
 
 static DeclRefExpr* EvalVal(Expr *E);
