From de089d462ca0d23fa2c3406d427431cdc850b2e5 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Mon, 17 Jan 2011 22:11:21 +0000 Subject: [PATCH] merge strings created by const NSConstantString *appKey = @"MyApp"; llvm-svn: 123680 --- clang/lib/CodeGen/CodeGenModule.cpp | 1 + clang/test/CodeGenObjC/ns-constant-strings.m | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp index 8ae31f775092..0564372a4e5d 100644 --- a/clang/lib/CodeGen/CodeGenModule.cpp +++ b/clang/lib/CodeGen/CodeGenModule.cpp @@ -1681,6 +1681,7 @@ CodeGenModule::GetAddrOfConstantString(const StringLiteral *Literal) { llvm::GlobalVariable *GV = new llvm::GlobalVariable(getModule(), C->getType(), isConstant, Linkage, C, ".str"); + GV->setUnnamedAddr(true); if (isUTF16) { CharUnits Align = getContext().getTypeAlignInChars(getContext().ShortTy); GV->setAlignment(Align.getQuantity()); diff --git a/clang/test/CodeGenObjC/ns-constant-strings.m b/clang/test/CodeGenObjC/ns-constant-strings.m index 3ef5f558422c..389132bd05ee 100644 --- a/clang/test/CodeGenObjC/ns-constant-strings.m +++ b/clang/test/CodeGenObjC/ns-constant-strings.m @@ -31,3 +31,9 @@ int main() { // CHECK-FRAGILE: @_NSConstantStringClassReference = external global // CHECK-NONFRAGILE: @"OBJC_CLASS_$_NSConstantString" = external global + +// CHECK-FRAGILE: @.str = private unnamed_addr constant [6 x i8] c"MyApp\00" +// CHECK-FRAGILE: @.str1 = private unnamed_addr constant [7 x i8] c"MyApp1\00" + +// CHECK-NONFRAGILE: @.str = private unnamed_addr constant [6 x i8] c"MyApp\00" +// CHECK-NONFRAGILE: @.str1 = private unnamed_addr constant [7 x i8] c"MyApp1\00"