diff options
Diffstat (limited to 'clang/lib/CodeGen')
-rw-r--r-- | clang/lib/CodeGen/CGExprConstant.cpp | 3 | ||||
-rw-r--r-- | clang/lib/CodeGen/CGObjCMac.cpp | 7 | ||||
-rw-r--r-- | clang/lib/CodeGen/CodeGenModule.cpp | 6 | ||||
-rw-r--r-- | clang/lib/CodeGen/CodeGenModule.h | 2 |
4 files changed, 8 insertions, 10 deletions
diff --git a/clang/lib/CodeGen/CGExprConstant.cpp b/clang/lib/CodeGen/CGExprConstant.cpp index 89b331950c1..51ad5b67b89 100644 --- a/clang/lib/CodeGen/CGExprConstant.cpp +++ b/clang/lib/CodeGen/CGExprConstant.cpp @@ -442,9 +442,8 @@ public: break; const Expr *Arg = CE->getArg(0)->IgnoreParenCasts(); const StringLiteral *Literal = cast<StringLiteral>(Arg); - std::string S(Literal->getStrData(), Literal->getByteLength()); // FIXME: need to deal with UCN conversion issues. - return CGM.GetAddrOfConstantCFString(S); + return CGM.GetAddrOfConstantCFString(Literal); } case Expr::BlockExprClass: { std::string FunctionName; diff --git a/clang/lib/CodeGen/CGObjCMac.cpp b/clang/lib/CodeGen/CGObjCMac.cpp index 351f8e25270..6b3ced08bf4 100644 --- a/clang/lib/CodeGen/CGObjCMac.cpp +++ b/clang/lib/CodeGen/CGObjCMac.cpp @@ -900,12 +900,7 @@ llvm::Value *CGObjCMac::GetSelector(CGBuilderTy &Builder, Selector Sel) { llvm::Constant *CGObjCCommonMac::GenerateConstantString( const ObjCStringLiteral *SL) { - std::string Str(SL->getString()->getStrData(), - SL->getString()->getByteLength()); - if (SL->getString()->containsNonAscii()) { - // FIXME: Convert from UTF-8 to UTF-16. - } - return CGM.GetAddrOfConstantCFString(Str); + return CGM.GetAddrOfConstantCFString(SL->getString()); } /// Generates a message send where the super is the receiver. This is diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp index 101b2e58b7f..d428c836afb 100644 --- a/clang/lib/CodeGen/CodeGenModule.cpp +++ b/clang/lib/CodeGen/CodeGenModule.cpp @@ -1002,7 +1002,11 @@ static void appendFieldAndPadding(CodeGenModule &CGM, // We still need to work out the details of handling UTF-16. // See: <rdr://2996215> llvm::Constant *CodeGenModule:: -GetAddrOfConstantCFString(const std::string &str) { +GetAddrOfConstantCFString(const StringLiteral *Literal) { + // if (Literal->containsNonAsciiOrNull()) { + // // FIXME: Convert from UTF-8 to UTF-16. + // } + std::string str(Literal->getStrData(), Literal->getByteLength()); llvm::StringMapEntry<llvm::Constant *> &Entry = CFConstantStringMap.GetOrCreateValue(&str[0], &str[str.length()]); diff --git a/clang/lib/CodeGen/CodeGenModule.h b/clang/lib/CodeGen/CodeGenModule.h index 8c7571fd642..c0dbbf8267f 100644 --- a/clang/lib/CodeGen/CodeGenModule.h +++ b/clang/lib/CodeGen/CodeGenModule.h @@ -187,7 +187,7 @@ public: /// GetAddrOfConstantCFString - Return a pointer to a constant CFString object /// for the given string. - llvm::Constant *GetAddrOfConstantCFString(const std::string& str); + llvm::Constant *GetAddrOfConstantCFString(const StringLiteral *Literal); /// GetAddrOfConstantStringFromLiteral - Return a pointer to a constant array /// for the given string literal. |