diff --git a/lib/CodeGen/CGExprConstant.cpp b/lib/CodeGen/CGExprConstant.cpp
index cae1f4b..fe11a5f 100644
--- a/lib/CodeGen/CGExprConstant.cpp
+++ b/lib/CodeGen/CGExprConstant.cpp
@@ -59,6 +59,10 @@
   llvm::Constant *VisitCXXBoolLiteralExpr(const CXXBoolLiteralExpr *E) {
     return llvm::ConstantInt::get(ConvertType(E->getType()), E->getValue());
   }
+  llvm::Constant *VisitObjCStringLiteral(const ObjCStringLiteral *E) {
+    return CGM.getObjCRuntime()->GenerateConstantString(
+        E->getString()->getStrData(), E->getString()->getByteLength());
+  }
   
   llvm::Constant *VisitCompoundLiteralExpr(CompoundLiteralExpr *E) {
     return Visit(E->getInitializer());
diff --git a/lib/CodeGen/CGObjCGNU.cpp b/lib/CodeGen/CGObjCGNU.cpp
index e545fc1..f2cfdca 100644
--- a/lib/CodeGen/CGObjCGNU.cpp
+++ b/lib/CodeGen/CGObjCGNU.cpp
@@ -302,9 +302,10 @@
 //constant strings.
 llvm::Constant *CGObjCGNU::GenerateConstantString(const char *String, const
     size_t length) {
+  std::string Str(String, String +length);
   std::vector<llvm::Constant*> Ivars;
   Ivars.push_back(NULLPtr);
-  Ivars.push_back(MakeConstantString(String));
+  Ivars.push_back(MakeConstantString(Str));
   Ivars.push_back(llvm::ConstantInt::get(IntTy, length));
   llvm::Constant *ObjCStr = MakeGlobal(
     llvm::StructType::get(PtrToInt8Ty, PtrToInt8Ty, IntTy, NULL),
diff --git a/lib/Sema/SemaExprObjC.cpp b/lib/Sema/SemaExprObjC.cpp
index 920457e..1aed69e 100644
--- a/lib/Sema/SemaExprObjC.cpp
+++ b/lib/Sema/SemaExprObjC.cpp
@@ -54,13 +54,17 @@
     IdentifierInfo *NSIdent = &Context.Idents.get("NSConstantString");
     Decl *IFace = LookupDecl(NSIdent, Decl::IDNS_Ordinary, TUScope);
     ObjCInterfaceDecl *strIFace = dyn_cast_or_null<ObjCInterfaceDecl>(IFace);
-    if (!strIFace)
-      return Diag(S->getLocStart(), diag::err_undef_interface,
-                  NSIdent->getName());
-    Context.setObjCConstantStringInterface(strIFace);
+    if (strIFace)
+      Context.setObjCConstantStringInterface(strIFace);
   }
   QualType t = Context.getObjCConstantStringInterface();
-  t = Context.getPointerType(t);
+  // If there is no NSConstantString interface defined then treat constant
+  // strings as untyped objects and let the runtime figure it out later.
+  if (t == QualType()) {
+    t = Context.getObjCIdType();
+  } else {
+    t = Context.getPointerType(t);
+  }
   return new ObjCStringLiteral(S, t, AtLoc);
 }
 
@@ -298,9 +302,9 @@
     else {
       ObjCInterfaceType *OCIReceiver =dyn_cast<ObjCInterfaceType>(receiverType);
       if (OCIReceiver == 0) {
-        Diag(lbrac, diag::error_bad_receiver_type,
-             RExpr->getType().getAsString());
-        return true;
+          Diag(lbrac, diag::error_bad_receiver_type,
+               RExpr->getType().getAsString());
+          return true;
       }
       ClassDecl = OCIReceiver->getDecl();
       // FIXME: consider using InstanceMethodPool, since it will be faster
