diff options
| -rw-r--r-- | llvm/lib/Transforms/Scalar/SimplifyLibCalls.cpp | 6 | ||||
| -rw-r--r-- | llvm/test/Transforms/SimplifyLibCalls/Printf.ll | 5 | 
2 files changed, 5 insertions, 6 deletions
diff --git a/llvm/lib/Transforms/Scalar/SimplifyLibCalls.cpp b/llvm/lib/Transforms/Scalar/SimplifyLibCalls.cpp index fbb9465743c..2a00ae1093b 100644 --- a/llvm/lib/Transforms/Scalar/SimplifyLibCalls.cpp +++ b/llvm/lib/Transforms/Scalar/SimplifyLibCalls.cpp @@ -1123,10 +1123,8 @@ struct PrintFOpt : public LibCallOptimization {        // Create a string literal with no \n on it.  We expect the constant merge        // pass to be run after this pass, to merge duplicate strings.        FormatStr.erase(FormatStr.end()-1); -      Constant *C = ConstantArray::get(*Context, FormatStr, true); -      C = new GlobalVariable(*Callee->getParent(), C->getType(), true, -                             GlobalVariable::InternalLinkage, C, "str"); -      EmitPutS(C, B, TD); +      Value *GV = B.CreateGlobalString(FormatStr, "str"); +      EmitPutS(GV, B, TD);        return CI->use_empty() ? (Value*)CI :                      ConstantInt::get(CI->getType(), FormatStr.size()+1);      } diff --git a/llvm/test/Transforms/SimplifyLibCalls/Printf.ll b/llvm/test/Transforms/SimplifyLibCalls/Printf.ll index caea311ba14..c98e79ae554 100644 --- a/llvm/test/Transforms/SimplifyLibCalls/Printf.ll +++ b/llvm/test/Transforms/SimplifyLibCalls/Printf.ll @@ -1,9 +1,10 @@ -; RUN: opt < %s -simplify-libcalls -S -o %t -; RUN: FileCheck < %t %s +; RUN: opt < %s -simplify-libcalls -S | FileCheck %s  @str = internal constant [13 x i8] c"hello world\0A\00"         ; <[13 x i8]*> [#uses=1]  @str1 = internal constant [2 x i8] c"h\00"              ; <[2 x i8]*> [#uses=1] +; CHECK: internal unnamed_addr constant [12 x i8] c"hello world\00" +  declare i32 @printf(i8*, ...)  ; CHECK: define void @f0  | 

