From: Richard Smith Date: Mon, 3 Dec 2012 22:39:14 +0000 (+0000) Subject: Fix test failure when building Clang with g++4.7 -- don't use a Twine temporary X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=73593eb5c68e28e0eaa4f2b6251dae167eef3a83;p=clang Fix test failure when building Clang with g++4.7 -- don't use a Twine temporary after its lifetime has ended! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169170 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/CGExpr.cpp b/lib/CodeGen/CGExpr.cpp index ef17bdc1de..0c2feda419 100644 --- a/lib/CodeGen/CGExpr.cpp +++ b/lib/CodeGen/CGExpr.cpp @@ -2068,11 +2068,11 @@ void CodeGenFunction::EmitCheck(llvm::Value *Checked, StringRef CheckName, // Checks that have two variants use a suffix to differentiate them bool NeedsAbortSuffix = (RecoverKind != CRK_Unrecoverable) && !CGM.getCodeGenOpts().SanitizeRecover; - Twine FunctionName = "__ubsan_handle_" + CheckName + - Twine(NeedsAbortSuffix? "_abort" : ""); - llvm::Value *Fn = CGM.CreateRuntimeFunction(FnType, FunctionName.str(), - llvm::Attributes::get(getLLVMContext(), - B)); + std::string FunctionName = ("__ubsan_handle_" + CheckName + + (NeedsAbortSuffix? "_abort" : "")).str(); + llvm::Value *Fn = + CGM.CreateRuntimeFunction(FnType, FunctionName, + llvm::Attributes::get(getLLVMContext(), B)); llvm::CallInst *HandlerCall = Builder.CreateCall(Fn, Args); if (Recover) { Builder.CreateBr(Cont);