diff --git a/include/clang/Basic/ObjCRuntime.h b/include/clang/Basic/ObjCRuntime.h
index 9212a8b..10922ed 100644
--- a/include/clang/Basic/ObjCRuntime.h
+++ b/include/clang/Basic/ObjCRuntime.h
@@ -116,11 +116,8 @@
     case MacOSX: return getVersion() >= VersionTuple(10, 7);
     case iOS: return getVersion() >= VersionTuple(5);
 
-    // This is really a lie, because some implementations and versions
-    // of the runtime do not support ARC.  Probably -fgnu-runtime
-    // should imply a "maximal" runtime or something?
-    case GCC: return true;
-    case GNUstep: return true;
+    case GCC: return false;
+    case GNUstep: return getVersion() >= VersionTuple(1, 6);
     }
     llvm_unreachable("bad kind");
   }
diff --git a/lib/Basic/ObjCRuntime.cpp b/lib/Basic/ObjCRuntime.cpp
index 0f30bfa..f52677b 100644
--- a/lib/Basic/ObjCRuntime.cpp
+++ b/lib/Basic/ObjCRuntime.cpp
@@ -54,6 +54,7 @@
   // Everything prior to that must be a valid string name.
   Kind kind;
   StringRef runtimeName = input.substr(0, dash);
+  Version = VersionTuple(0);
   if (runtimeName == "macosx") {
     kind = ObjCRuntime::MacOSX;
   } else if (runtimeName == "macosx-fragile") {
@@ -61,6 +62,9 @@
   } else if (runtimeName == "ios") {
     kind = ObjCRuntime::iOS;
   } else if (runtimeName == "gnustep") {
+    // If no version is specified then default to the most recent one that we
+    // know about.
+    Version = VersionTuple(1, 6);
     kind = ObjCRuntime::GNUstep;
   } else if (runtimeName == "gcc") {
     kind = ObjCRuntime::GCC;
@@ -69,7 +73,6 @@
   }
   TheKind = kind;
   
-  Version = VersionTuple(0);
   if (dash != StringRef::npos) {
     StringRef verString = input.substr(dash + 1);
     if (Version.tryParse(verString)) 
diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp
index a558c1f..3b15d12 100644
--- a/lib/Driver/Tools.cpp
+++ b/lib/Driver/Tools.cpp
@@ -2934,7 +2934,12 @@
   // -fgnu-runtime
   } else {
     assert(runtimeArg->getOption().matches(options::OPT_fgnu_runtime));
-    runtime = ObjCRuntime(ObjCRuntime::GCC, VersionTuple());
+    // Legacy behaviour is to target the gnustep runtime if we are i
+    // non-fragile mode or the GCC runtime in fragile mode.
+    if (isNonFragile)
+      runtime = ObjCRuntime(ObjCRuntime::GNUstep, VersionTuple());
+    else
+      runtime = ObjCRuntime(ObjCRuntime::GCC, VersionTuple());
   }
 
   cmdArgs.push_back(args.MakeArgString(
