diff --git a/Driver/clang.cpp b/Driver/clang.cpp
index bb838ed..303bfe7 100644
--- a/Driver/clang.cpp
+++ b/Driver/clang.cpp
@@ -462,6 +462,9 @@
                      llvm::cl::desc("Allow implicit conversions between vectors"
                                     " with a different number of elements or "
                                     "different element types"));
+static llvm::cl::opt<bool>
+EnableBlocks("fblocks", llvm::cl::desc("enable the 'blocks' language feature"));
+
 
 // FIXME: This (and all GCC -f options) really come in -f... and
 // -fno-... forms, and additionally support automagic behavior when
@@ -494,7 +497,6 @@
 
 // FIXME: add:
 //   -fdollars-in-identifiers
-//   -fpascal-strings
 static void InitializeLanguageStandard(LangOptions &Options, LangKind LK,
                                        TargetInfo *Target) {
   // Allow the target to set the default the langauge options as it sees fit.
@@ -570,11 +572,14 @@
   Options.Trigraphs = LangStd < lang_gnu_START || Trigraphs ? 1 : 0;
 
   Options.DollarIdents = 1;  // FIXME: Really a target property.
-  Options.PascalStrings = PascalStrings;
+  if (PascalStrings.getPosition())
+    Options.PascalStrings = PascalStrings;
   Options.Microsoft = MSExtensions;
   Options.WritableStrings = WritableStrings;
   Options.LaxVectorConversions = LaxVectorConversions;
   Options.Exceptions = Exceptions;
+  if (EnableBlocks.getPosition())
+    Options.Blocks = EnableBlocks;
 
   // Override the default runtime if the user requested it.
   if (NeXTRuntime)
diff --git a/include/clang/Basic/LangOptions.h b/include/clang/Basic/LangOptions.h
index 5cf9fc1..4b53552 100644
--- a/include/clang/Basic/LangOptions.h
+++ b/include/clang/Basic/LangOptions.h
@@ -69,7 +69,7 @@
     
     // FIXME: The default should be 1.
     ThreadsafeStatics = 0;
-    Blocks = 1;
+    Blocks = 0;
   }
   
   GCMode getGCMode() const { return (GCMode) GC; }
diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp
index 6f563a5..c1974be 100644
--- a/lib/Basic/Targets.cpp
+++ b/lib/Basic/Targets.cpp
@@ -86,40 +86,70 @@
   Define(Defs, "__gnu_linux__");
 }
 
+/// getDarwinNumber - Parse the 'darwin number' out of the specific targe
+/// triple.  For example, if we have darwin8.5 return 8,5,4.  If any entry is
+/// not defined, return 0's.  Return true if we have -darwin in the string or
+/// false otherwise.
+static bool getDarwinNumber(const char *Triple, unsigned &Maj, unsigned &Min) {
+  Maj = Min = 0;
+  const char *Darwin = strstr(Triple, "-darwin");
+  if (Darwin == 0) return false;
+  
+  Darwin += strlen("-darwin");
+  if (Darwin[0] < '0' || Darwin[0] > '9')
+    return true;
+  
+  Maj = Darwin[0]-'0';
+  ++Darwin;
+    
+  // Handle "darwin11".
+  if (Maj == 1 && Darwin[0] >= '0' && Darwin[0] <= '9') {
+    Maj = 10+Darwin[0]-'0';
+    ++Darwin;
+  }
+    
+  // Handle minor version: 10.4.9 -> darwin8.9 -> "1049"
+  if (Darwin[0] == '.' && Darwin[1] >= '0' && Darwin[1] <= '9' &&
+      Darwin[2] == '\0')
+    Min = Darwin[1]-'0';
+  
+  return true;
+}
+
 static void getDarwinDefines(std::vector<char> &Defs, const char *Triple) {
   Define(Defs, "__APPLE__");
   Define(Defs, "__MACH__");
   
   // Figure out which "darwin number" the target triple is.  "darwin9" -> 10.5.
-  const char *Darwin = strstr(Triple, "-darwin");
-  if (Darwin) {
+  unsigned Maj, Min;
+  if (getDarwinNumber(Triple, Maj, Min)) {
     char DarwinStr[] = "1000";
-    Darwin += strlen("-darwin");
-    if (Darwin[0] >= '0' && Darwin[0] <= '9') {
-      unsigned DarwinNo = Darwin[0]-'0';
-      ++Darwin;
-      
-      // Handle "darwin11".
-      if (DarwinNo == 1 && Darwin[0] >= '0' && Darwin[0] <= '9') {
-        DarwinNo = 10+Darwin[0]-'0';
-        ++Darwin;
-      }
-      
-      if (DarwinNo >= 4 && DarwinNo <= 13) { // 10.0-10.9
-        // darwin7 -> 1030, darwin8 -> 1040, darwin9 -> 1050, etc.
-        DarwinStr[2] = '0' + DarwinNo-4;
-      }
-      
-      // Handle minor version: 10.4.9 -> darwin8.9 -> "1049"
-      if (Darwin[0] == '.' && Darwin[1] >= '0' && Darwin[1] <= '9' &&
-          Darwin[2] == '\0')
-        DarwinStr[3] = Darwin[1];
-      
+    if (Maj >= 4 && Maj <= 13) { // 10.0-10.9
+      // darwin7 -> 1030, darwin8 -> 1040, darwin9 -> 1050, etc.
+      DarwinStr[2] = '0' + Maj-4;
     }
+      
+    // Handle minor version: 10.4.9 -> darwin8.9 -> "1049"
+    DarwinStr[3] = Min+'0';
     Define(Defs, "__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__", DarwinStr);
   }
 }
 
+/// GetDarwinLanguageOptions - Set the default language options for darwin.
+static void GetDarwinLanguageOptions(LangOptions &Opts,
+                                     const char *Triple) {
+  Opts.NeXTRuntime = true;
+  
+  unsigned Maj, Min;
+  if (!getDarwinNumber(Triple, Maj, Min))
+    return;
+  
+  // Blocks default to on for 10.6 (darwin10) and beyond.
+  if (Maj > 9)
+    Opts.Blocks = 1;
+}
+
+
 //===----------------------------------------------------------------------===//
 // Defines specific to certain architectures.
 //===----------------------------------------------------------------------===//
@@ -358,6 +388,7 @@
 };
 } // end anonymous namespace.
 
+
 namespace {
 class DarwinPPCTargetInfo : public PPC32TargetInfo {
 public:
@@ -371,7 +402,7 @@
   /// various language options.  These may be overridden by command line
   /// options. 
   virtual void getDefaultLangOptions(LangOptions &Opts) {
-    Opts.NeXTRuntime = true;
+    GetDarwinLanguageOptions(Opts, getTargetTriple());
   }
 };
 } // end anonymous namespace.
@@ -389,7 +420,7 @@
   /// various language options.  These may be overridden by command line
   /// options. 
   virtual void getDefaultLangOptions(LangOptions &Opts) {
-    Opts.NeXTRuntime = true;
+    GetDarwinLanguageOptions(Opts, getTargetTriple());
   }
 };
 } // end anonymous namespace.
@@ -541,7 +572,7 @@
   /// various language options.  These may be overridden by command line
   /// options. 
   virtual void getDefaultLangOptions(LangOptions &Opts) {
-    Opts.NeXTRuntime = true;
+    GetDarwinLanguageOptions(Opts, getTargetTriple());
   }
 };
 } // end anonymous namespace
@@ -690,7 +721,7 @@
   /// various language options.  These may be overridden by command line
   /// options. 
   virtual void getDefaultLangOptions(LangOptions &Opts) {
-    Opts.NeXTRuntime = true;
+    GetDarwinLanguageOptions(Opts, getTargetTriple());
   }
 };
 } // end anonymous namespace.
diff --git a/test/Analysis/misc-ps.m b/test/Analysis/misc-ps.m
index 8fb8252..0069af8 100644
--- a/test/Analysis/misc-ps.m
+++ b/test/Analysis/misc-ps.m
@@ -1,4 +1,4 @@
-// RUN: clang -checker-cfref --verify %s
+// RUN: clang -checker-cfref --verify -fblocks %s
 
 // Reduced test case from crash in <rdar://problem/6253157>
 @class NSObject;
diff --git a/test/Parser/block-pointer-decl.c b/test/Parser/block-pointer-decl.c
index a9da325..9920f5f 100644
--- a/test/Parser/block-pointer-decl.c
+++ b/test/Parser/block-pointer-decl.c
@@ -1,4 +1,4 @@
-// RUN: clang -fsyntax-only -verify -parse-noop %s
+// RUN: clang -fsyntax-only -verify -parse-noop -fblocks %s
 
 struct blockStruct {
   int (^a)(float, int);
diff --git a/test/Rewriter/block-test.c b/test/Rewriter/block-test.c
index 82b63a0..c65815f 100644
--- a/test/Rewriter/block-test.c
+++ b/test/Rewriter/block-test.c
@@ -1,4 +1,4 @@
-// RUN: clang -rewrite-blocks %s -o -
+// RUN: clang -rewrite-blocks %s -fblocks -o -
 
 static int (^block)(const void *, const void *) = (int (^)(const void *, const void *))0;
 static int (*func)(int (^block)(void *, void *)) = (int (*)(int (^block)(void *, void *)))0;
diff --git a/test/Sema/block-args.c b/test/Sema/block-args.c
index 42e2859..d518fef 100644
--- a/test/Sema/block-args.c
+++ b/test/Sema/block-args.c
@@ -1,4 +1,4 @@
-// RUN: clang %s -fsyntax-only -verify
+// RUN: clang %s -fsyntax-only -verify -fblocks
 
 void take(void*);
 
diff --git a/test/Sema/block-as-object.m b/test/Sema/block-as-object.m
index 8afab4c..28f8d77 100644
--- a/test/Sema/block-as-object.m
+++ b/test/Sema/block-as-object.m
@@ -1,4 +1,4 @@
-// RUN: clang %s -fsyntax-only -verify
+// RUN: clang %s -fsyntax-only -verify -fblocks
 
 @interface Whatever
 - copy;
diff --git a/test/Sema/block-byref-args.c b/test/Sema/block-byref-args.c
index 9b568f0..29f5a3a 100644
--- a/test/Sema/block-byref-args.c
+++ b/test/Sema/block-byref-args.c
@@ -1,4 +1,4 @@
-// RUN: clang %s -fsyntax-only -verify
+// RUN: clang %s -fsyntax-only -verify -fblocks
 
 #include <stdio.h>
 
diff --git a/test/Sema/block-call.c b/test/Sema/block-call.c
index 871dbf7..66bf725 100644
--- a/test/Sema/block-call.c
+++ b/test/Sema/block-call.c
@@ -1,4 +1,4 @@
-// RUN: clang -fsyntax-only -verify %s
+// RUN: clang -fsyntax-only -verify %s -fblocks
 
 int (*FP)();
 int (^IFP) ();
diff --git a/test/Sema/block-literal.c b/test/Sema/block-literal.c
index 6cca269..d5d41ab 100644
--- a/test/Sema/block-literal.c
+++ b/test/Sema/block-literal.c
@@ -1,4 +1,4 @@
-// RUN: clang -fsyntax-only %s -verify
+// RUN: clang -fsyntax-only %s -verify -fblocks
 
 void I( void (^)(void));
 void (^noop)(void);
diff --git a/test/Sema/block-misc.c b/test/Sema/block-misc.c
index c4d0c2d..5509867 100644
--- a/test/Sema/block-misc.c
+++ b/test/Sema/block-misc.c
@@ -1,4 +1,4 @@
-// RUN: clang -fsyntax-only -verify %s
+// RUN: clang -fsyntax-only -verify %s -fblocks
 void donotwarn();
 
 int (^IFP) ();
diff --git a/test/Sema/block-return.c b/test/Sema/block-return.c
index b88fb9b..e835c96 100644
--- a/test/Sema/block-return.c
+++ b/test/Sema/block-return.c
@@ -1,4 +1,4 @@
-// RUN: clang -fsyntax-only %s -verify
+// RUN: clang -fsyntax-only %s -verify -fblocks
 
 typedef void (^CL)(void);
 
diff --git a/test/Sema/block-storageclass.c b/test/Sema/block-storageclass.c
index 662bd73..0ae723d 100644
--- a/test/Sema/block-storageclass.c
+++ b/test/Sema/block-storageclass.c
@@ -1,4 +1,4 @@
-// RUN: clang %s -fsyntax-only -verify
+// RUN: clang %s -fsyntax-only -verify -fblocks
 
 #include <stdio.h>
 void _Block_byref_release(void*src){}
diff --git a/test/SemaCXX/blocks.cpp b/test/SemaCXX/blocks.cpp
index c273a16..8b4b3ae 100644
--- a/test/SemaCXX/blocks.cpp
+++ b/test/SemaCXX/blocks.cpp
@@ -1,4 +1,4 @@
-// RUN: clang -fsyntax-only -verify %s
+// RUN: clang -fsyntax-only -verify %s -fblocks
 
 void tovoid(void*);
 
diff --git a/test/SemaObjC/block-ivar.m b/test/SemaObjC/block-ivar.m
index d1f56b6..4220183 100644
--- a/test/SemaObjC/block-ivar.m
+++ b/test/SemaObjC/block-ivar.m
@@ -1,4 +1,4 @@
-// RUN: clang -fsyntax-only -verify %s
+// RUN: clang -fsyntax-only -verify %s -fblocks
 
 @interface NSObject {
   struct objc_object *isa;
diff --git a/test/SemaObjC/property-10.m b/test/SemaObjC/property-10.m
index 2de5205..866fd37 100644
--- a/test/SemaObjC/property-10.m
+++ b/test/SemaObjC/property-10.m
@@ -1,4 +1,4 @@
-// RUN: clang -fsyntax-only -verify %s
+// RUN: clang -fsyntax-only -verify %s  -fblocks
 
 // Check property attribute consistency.
 
